select distinct
substring_index(substring_index(a.q,';',b.help_topic_id+1),';',-1) ss
from a join mysql.help_topic b
on b.help_topic_id < (length(a.q) - length(replace(a.q,';',''))+1)
SELECT
SUBSTRING_INDEX(SUBSTRING_INDEX('7654,7698,7782,7788',',',help_topic_id+1),',',-1) AS num
FROM
mysql.help_topic
WHERE
help_topic_id < LENGTH('7654,7698,7782,7788')-LENGTH(REPLACE('7654,7698,7782,7788',',',''))+1
1.字符串分隔函数:SUBSTRING_INDEX(str, delim, count)
str 需要拆分的字符串
delim 分隔符,通过某字符进行拆分
count 当 count 为正数,取第 n 个分隔符之前的所有字符; 当 count 为负数,取倒数第 n 个分隔符之后的所有字符。
举例: 取第2个分隔符之前的所有字符
2.替换函数replace( str, from_str, to_str)
参数名 解释
str 需要进行替换的字符串
from_str 需要被替换的字符串
to_str 替换后的字符串
3.help_topic:一般为系统表,轻易不要修改,那么可以自己新建一个表,help_index,里面就一个字段help_index_id,只要保证这个表里面有较多数据,就可以了.
-- where条件的含义是求出有多少列
help_topic_id < LENGTH('7654,7698,7782,7788')-
LENGTH(REPLACE('7654,7698,7782,7788',',',''))+1
-- 条件
SUBSTRING_INDEX('7654,7698,7782,7788',',',help_topic_id+1)
-- 当 help_topic_id = 0时,获取到的字符串 = 7654
-- 当 help_topic_id = 1时,获取到的字符串 = 7654,7698
-- 如下图: 两次循环自然就去掉了所有字符