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底层优化过的
结束
本文来自博客园,作者:lanwf,转载请注明原文链接:https://www.cnblogs.com/lccsdncnblogs/p/15768367.html