1.效果:
原本字符串:转成列数据
2.SQL语句
SELECT
SUBSTRING_INDEX(SUBSTRING_INDEX(aa.pid,',',help_topic_id+1),',',-1) AS num
FROM
mysql.`help_topic`,(#查询pid字符串的SQL语句
) AS aa
WHERE
help_topic_id <= LENGTH(aa.pid)-LENGTH(REPLACE(aa.pid,',',''))
3.相应知识点:
3.1 MySQL替换字符串
replace(字符串,要替换的字符,新字符)
3.2 MySQL取字符串长度
常用的取长度函数有char_length()、length()、bit_length()
char_length() 返回字符个数,一个中文或英文字符返回都是1
length() 字符在当前编码下存储,所占的字节数
bit_length() 字符在当前编码下存储,所占的bit,也就是length*8
3.3 substring_index()
substring_index(字符串,指定字符,第n次位置),如果指定字符在字符串中搜索不到,则返回整个字符串
SUBSTRING_INDEX(s, delimiter, number)
返回从字符串 s 的第 number 个出现的分隔符 delimiter 之后的子串。(从1开始,所以help_topic_id+1)
二种理解思路分别如下:
案例1:
#如果 number 是正数,返回第 number 个字符左边的字符串。
SELECT SUBSTRING_INDEX('a*b*c*d*e','*',3); ---- a*b*c
#如果 number 是负数,返回第(number 的绝对值(从右边数))个字符右边的字符串。
SELECT SUBSTRING_INDEX('a*b*c','*',-1); ---- c
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('a*b*c*d*e','*',3),'*',-1);
案例2:
#截取第二个 ‘.’ 之前的所有字符。
select substring_index(‘www.csdn.com’ , ‘.’ , 2);
www.csdn
#截取第2个 ‘.’ (倒数)之后的所有字符。
select substring_index(‘www.csdn.com’ , ‘.’ , -2);
csdn.com
3.4 help_topic表
help_topic表是数据库mysql下的一个表(id从0开始)