id | name | str |
1 | sonnyboy | 1,11,12,13, |
2 | sonnyboy1 | 2,22,23,24 |
3 | sonnyboy2 | 11,23,12 |
需要查询 str 包含1的字段 的name值 根据上表中查询 应该只有id 为1的 满足需求
在mysql 中instr函数的语法是:INSTR(字段名, 字符串)。这个函数返回字符串在某一个字段的内容中
的位置, 没有找到字符串返回0,否则返回所在的位置(是从1开始)
1.select name from temp where instr(str,1)>0
包括sonnyboy 和sonnyboy2
2.
FIND_IN_SET(str,strlist)
如果字符串str在由N子串组成的表strlist之中,返回一个1到N的值。一个字符串表是被“,”分隔的子
串组成的一个字符串。如果第一个参数是一个常数字符串并且第二个参数是一种类型为SET的列,
FIND_IN_SET()函数被优化而使用位运算!如果str不是在strlist里面或如果 strlist是空字符串,返回
0。如果任何一个参数是NULL,返回NULL。如果第一个参数包含一个“,”,该函数将工作不正常。
mysql> SELECT FIND_IN_SET( 'b ', 'a,b,c,d ');
select name from temp where find_in_set(1,str);
这个查询满足要求