MySQL是最受歡迎的關系型數據庫之一,它提供了許多功能,其中之一是能夠使用單個字段生成多條數據。在本文中,我們將介紹如何使用 MySQL 切割字段以生成多個數據。
假設我們有一個名為“animals”的表,其中有一個名為“names”的字段,其中包含多個動物名稱,用逗號分隔。例如,“dog,cat,fish”。我們想要根據這個字段創建一個新的表“all_animals”,其中每個動物名稱都單獨成行。
CREATE TABLE all_animals ( id int(11) NOT NULL AUTO_INCREMENT, name VARCHAR(50) NOT NULL, PRIMARY KEY (`id`) ); INSERT INTO all_animals (name) SELECT TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(names, ',', n.n), ',', -1)) as name FROM animals CROSS JOIN ( SELECT a.N + b.N * 10 + 1 n FROM (SELECT 0 AS N UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 ) a JOIN (SELECT 0 AS N UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 ) b ON n.n<= LENGTH(animals.names) - LENGTH(REPLACE(animals.names, ',', '')) + 1 ) n WHERE TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(names, ',', n.n), ',', -1))<>'';
這個代碼塊需要解釋一下:
- 我們創建了一個名為“all_animals”的新表,其中包含“id”和“name”兩個字段,其中“id”是自動增加的主鍵。
- 然后,我們使用 SELECT 語句從“animals”表中選擇所有名稱。我們使用 TRIM 函數從名稱中刪除多余的空格,并使用 SUBSTRING_INDEX 函數切割字符串。
- 我們使用 CROSS JOIN 和 UNION 子句生成一個名為“n”的虛擬表,該表僅包含 10 個行,然后使用這個表生成數字串。我們在這里使用數字串,以分割名稱字段中的每個逗號分隔項。因此,我們可以使用這個數字串將單個組合名稱拆分為單個動物名稱。
- 最后,我們在 WHERE 子句中刪除名稱中的任何空格,然后將行插入“all_animals”表中。
現在我們已經成功地使用單個字段生成多條數據。這對于許多應用程序非常有用,如電子商務網站、社交媒體和博客。希望這篇文章能給你帶來好處,以便更好地使用 MySQL。
上一篇vue尺寸是什么