mysql如何将字符串以“,”分割转变为列数据?目标:放入SQL语句in()里面!

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开始)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值