【MySQL】FIND_IN_SET、LIKE、IN的区别

现在有张新闻表,里面有新闻名称name字段,有新闻类型type字段,1代表头条,2代表推荐,11代表热点,22代表最新,现在表中有两条记录,存储形式如下,现在的需求是查找头条新闻,及type中包含1的:


LIKE函数

  可以看出,把包含11的数据也查出来了,因为它符合查询条件,包含1,所以使用like就不满足这种需求了

IN()函数

   这样查询的结果也不符合要求

  这样查找的结果不符合预期, in 后面应该是真实的数据,只有 数组 在 in后面能找到才行, 不能用字段代替,这也是一大区别


FIND_IN_SET()函数

  可看出,准确查找出了type包含1的记录,完全符合需求(没有把包含11的记录查询出来)

【作用】

  FIND_IN_SET(‘str,’strList’),查找strList字段中包含str结果,返回null或记录

【使用方法】

  • 返回值所在字段的索引位置,索引从1开始;如果没有符合的值,返回0
  • strList中间的值必须以,分隔
  • 当某个字段为NULL时,无论FIND_IN_SET()条件是何种查询条件,字段有为NULL的记录都符合
三者区别
  1. like是广泛的模糊匹配,字符串中没有分隔符
  2. IN 后面是变量,且是模糊查询
  3. Find_IN_SET 是精确匹配,字段值必须以英文”,”分隔,Find_IN_SET查询的结果要小于like查询的结果
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 21
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值