場景:
表名:testsuer
id name
1 小紅,小李,李紅,小法
要結果值為:
1 小紅
1 小李
1 李紅
1 小法
MYSQL函數解釋:
substring_index(str,delim,count)
說明:substring_index(被截取字段,關鍵字,關鍵字出現的次數)
JOIN:這個join最基本原理是笛卡爾積。通過這個方式來實現循環
- INNER JOIN(內連接,或等值連接):獲取兩個表中字段匹配關系的記錄。
- LEFT JOIN(左連接):獲取左表所有記錄,即使右表沒有對應匹配的記錄。
- RIGHT JOIN(右連接): 與 LEFT JOIN 相反,用於獲取右表所有記錄,即使左表沒有對應匹配的記錄。
mysql內部也有現成的連續數列表可用。如mysql.help_topic: help_topic_id 共有504個數值,一般能滿足於大部分需求了。
SELECT
substring_index( substring_index( a.strcode, ',', b.help_topic_id + 1 ), ',',- 1 )
FROM
T_buttoninfo a
JOIN mysql.help_topic b ON b.help_topic_id < ( length( a.strcode ) - length( REPLACE ( a.strcode, ',', '' ) ) + 1)
這種方法的缺點在於,我們需要一個擁有連續數列的獨立表(這里是incre_table)。並且連續數列的最大值一定要大於符合分割的值的個數。
例如有一行的mSize 有100個逗號分割的值,那么我們的incre_table 就需要有至少100個連續行。
當然,mysql內部也有現成的連續數列表可用。如mysql.help_topic: help_topic_id 共有504個數值,一般能滿足於大部分需求了。
