MYSQL:sql中某⼀个字段内容为⽤逗号分割的字符串转换成多
条数据
场景:字符串截取逗号前面的
表名: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.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.help_topic: help_topic_id 共有504个数值,⼀般能满⾜于⼤部分需求了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论