今天同事拿出个小栗子
1 如果用like的话 1,22 的情况会被字符串2匹配到这样会有问题
这里需要用concat将uids处理下 比如第一条处理成,1,2,3, 的形式 去模糊匹配 ‘%,1,%’
当然like这种模糊匹配不太建议使用
2 regexp 用法
单个值 :REGEXP ‘(^|,)(需要找的值)(,|$)’
多个值: REGEXP ‘(^|,)(第一个值|第二个值)(,|$)’
多个中间需要用 | 隔开
搜索了一堆资料找到了个好办法 要匹配的字符串可以转化成1|5|6的形式 这样一步可以到位
where(‘uids’,‘regexp’,‘(^|,)(‘1|5|6’)(,|$)’)
3 find_in_set 也可以实现
SELECT * FROM table_name WHERE FIND_IN_SET(‘1’,uids);
可以这么写
FIND_IN_SET('11',uids) OR FIND_IN_SET('3',uids);