Splitting Strings in MySQL with strSplit Function
與重複線程中的問題不同,這個問題專門詢問如何拆分以號分隔的字串將列分成多行。為了實現這一點,MySQL 提供了一個利用 strSplit() 函數的多功能預存程序。
strSplit() 函數根據指定的分隔符號 (delim) 和位置 (pos) 分解給定的字串 (x) 。它透過從分隔字串的 pos 位置提取子字串,用空字串替換分隔符,然後傳回生成的子字串來實現這一點。
為了說明這一點,讓我們考慮輸入表:
Col1 | Col2 |
---|---|
1 | a,b,c |
2 | d,e |
要將其轉換為所需的輸出:
Col1 | Col2 |
---|---|
1 | a |
1 | b |
1 | c |
2 | d |
2 | e |
我們將BadTableToGoodTable()預存程序定義為如下:
CREATE PROCEDURE BadTableToGoodTable() BEGIN DECLARE i INTEGER; SET i = 1; REPEAT INSERT INTO GoodTable (col1, col2) SELECT col1, strSplit(col2, ',', i) FROM BadTable WHERE strSplit(col2, ',', i) IS NOT NULL; SET i = i + 1; UNTIL ROW_COUNT() = 0 END REPEAT; END $$
這裡,我們使用REPEAT 語句循環遍歷Col2的逗號分隔字串中的每個字符,使用 strSplit() 提取子字串並將其插入到新表 (GoodTable) 中。
透過遵循這些步驟,我們可以有效地拆分 MySQL 中的字串,從而使我們能夠將逗號分隔的資料列重塑為更規範化的資料結構。
以上是MySQL 的 strSplit 函數如何將逗號分隔的字串轉換為多行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!