欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > MySql 中的解决某列中多个字段查询是否存在指定某个值, FIND_IN_SET 用法。

MySql 中的解决某列中多个字段查询是否存在指定某个值, FIND_IN_SET 用法。

2025/4/21 11:57:24 来源:https://blog.csdn.net/weixin_43829047/article/details/144555159  浏览:    关键词:MySql 中的解决某列中多个字段查询是否存在指定某个值, FIND_IN_SET 用法。

简言:今天公司数据库里面有个列是多个数据拼接而成的比如:**“,131113,749932833,749932825,749932826,749932827,749932828,749932829,”**想要通过sql 查找749932833值的列,很多同学第一想到的就是like 模糊匹配,模糊匹配不能保证数据的查询的准确性,后来查了下api 可以使用函数 FIND_IN_SET 完成相应查找。

首先来个需求;需要通过表tb_channel_page_config 查询channels列包含74991358记录。

在这里插入图片描述
1 使用like 模糊匹配是可以查到数据
在这里插入图片描述
但是这种情况下会出现数据不准确的问题。
比如修改channels 字段数据:,74991380,749913581,74991361,74991378,
会发现上面的sql 也可以查出相关记录,这种情况下数据是不够准确的存在一定数据误差。
在这里插入图片描述

然后,我们的主角进来了,FIND_IN_SET 函数。

  1. 先对FIND_IN_SET 函数用法做个介绍。
    FIND_IN_SET 函数来判断一个逗号分隔的字符串列表中是否包含某个特定的值。假设您的数据存储在某个表的某一列中,您可以使用以下 SQL 语句来进行判断:

  2. 用法

SELECT * FROM `tb_channel_page_config` where FIND_IN_SET('74991358',CHANNELS)>0

执行完结果:
在这里插入图片描述
也是可以得到我们想要效果。
再试下修改数据后参考like模糊匹配数据
最后得到的结果是查询匹配不到数据,这里就不给结果,感兴趣的同学可以自己手动试下,增加函数理解度。

3)总结

1.FIND_IN_SET(‘74991358’, CHANNELS) 函数返回一个值,表示 ‘74991358’ 在 CHANNELS中的位置,如果找不到则返回 0。

2.WHERE FIND_IN_SETFIND_IN_SET(‘74991358’, CHANNELS) > 0 条件用来筛选出 CHANNELS中包含 ‘74991358’ 的所有行。

通过这种方法,您可以方便地判断一个逗号分隔的字符串列表中是否包含某个特定的值。

学习完快去试下吧,希望对你有帮助。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词