FIND_IN_SET(str,strlist)
注释:
str 要查询的字符串
strlist 字段名 参数以”,”分隔 如 (1,2,6,8)
查询字段(strlist)中包含(str)的结果,返回结果为null或记录
例子:
mysql> SELECT FIND_IN_SET('b', 'a,b,c,d');
-> 2 因为b 在strlist集合中放在2的位置 从1开始
select FIND_IN_SET('1', '1'); 返回 就是1 这时候的strlist集合有点特殊 只有一个字符串 其实就是要求前一个字符串 一定要在后一个字符串集合中才返回大于0的数
select FIND_IN_SET('2', '1,2'); 返回2
select FIND_IN_SET('6', '1'); 返回0
实际场景:
原表:
需求1:现在我们要查str字段中hh的信息
sql:
select * from wstest1 where find_in_set('hh',str);
需求2:我们想查str字段中,如果包含多个逗号就取第一个逗号前面的值,如果是一个完整值就直接输出。
sql:
select id,IF(length(str) - length(replace(str,',','')),left(str, LOCATE(',',str)-1),str) from wstest1
解析:
IF(length(str) - length(replace(str,',','')),left(str, LOCATE(',',str)-1),str)
length(str) - length(replace(str,',','')):目的是查看字段中包含逗号的数量。
如果数量大于0,则返回截取后的第一个值。否则输出整个值。