mysql中 find_in_set函数使用

在mysql中,有时我们在查询时,需要得到某字段中包含某个值的记录,但是使用like可能查到我们不想要的记录,此时mysql的FIND_IN_SET函数就派上用场了,下面来看一个例子。

创建表并插入语句:

CREATE TABLE users(
    id int(6) NOT NULL AUTO_INCREMENT,
    name VARCHAR(20) NOT NULL,
    language VARCHAR(50) NOT NULL, -- 语言特长
    PRIMARY KEY (id)
);

INSERT INTO users(name, limits) VALUES('张三','英语,普通话'); 
INSERT INTO users(name, limits) VALUES('王五','英语四级,普通话,日语'); 
INSERT INTO users(name, limits) VALUES('赵六','普通话,日语,英语'); 
INSERT INTO users(name, limits) VALUES('李四','英语四级,普通话二级,日语四级');

我要查询普通话等级没有写明的人   用like查询无法准确查找到结果,用find_in_set可以准确查询

select * from users where find_in_set('普通话',language);

则只会查询到language以逗号分隔,然后其中包含普通话的记录。而用like查询会查询到包含普通话这个字符串的所有结果,不够准确

总结:mysql字符串函数 find_in_set(str1,str2)函数是返回str2中str1所在的位置索引(索引值从1开始),str2必须以","分割开。like是广泛的模糊匹配,字符串中没有分隔符,Find_IN_SET 是精确匹配,字段值以英文”,”分隔,Find_IN_SET查询的结果要小于like查询的结果。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值