mysql中的find_in_set()用法

使用场景

如果一个字段里面是用逗号拼隔的id字符串,那么怎么可以精确的查找到某个id是否在那一行数据中呢。

 

模糊匹配

如下,求只带有 2 的数据:

 显然用模糊拼配肯定不行,因为不精确,会把带有相同id的一部分属性也会匹配进去

 

那怎么求只带2的数据呢

用 find_in_set() 函数

 

 问题解决

 

官方说明

官网:https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_find-in-set

函数:FIND_IN_SET(str,strList)

 

 意思是, find_in_set 函数会匹配到 第一个1到N的值, 即 上面 填写 str 填  ‘a' -> 1 , ‘b’ ->2 , 'c' ->3 ,'d' -> 4 ,如果填 ‘e’ 或者不存在的值 会返 0 

那么上面的sql就可得 :

完整写法:SELECT bank_auth FROM ps_user WHERE FIND_IN_SET(2,bank_auth)  > 0

缩略写法:SELECT bank_auth FROM ps_user WHERE FIND_IN_SET(2,bank_auth)          这个是经过mysql底层优化过的

 

结束

posted @ 2022-01-05 20:17  lanwf  阅读(572)  评论(0编辑  收藏  举报