欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mysql语句中判断是否包含某字符串的方法

程序员文章站 2022-03-13 15:53:47
当我们需要对数据做筛选和查询的时候,往往会涉及到一些限制条件的判断,今天就分享一个判断字符串的技巧。 like 相信大家对like的用法肯定都很熟悉了,它可以匹配字段以某字符串开始,以某字符串结尾,包含有某字符串,用法如下:like '%string',like 'string%',like '%s ......

当我们需要对数据做筛选和查询的时候,往往会涉及到一些限制条件的判断,今天就分享一个判断字符串的技巧。

like

相信大家对like的用法肯定都很熟悉了,它可以匹配字段以某字符串开始,以某字符串结尾,包含有某字符串,用法如下:like '%string',like 'string%',like '%string%'

find_in_set

现在我们遇到这样一个需求,字段里面的值是这样的,(1,2,3,4),(12,14),(3,5,11,12),(22,25,28,29),然后需要判断字段里面是否有2这个值,如果我们使用like的话,肯定是得不到正确的结果(如果不信,可以用like去验证一下)

这里我们来了解一下find_in_set,它是一个mysql字符串函数,用它就可以完美解决上面的问题,用法如下:find_in_set(2, 字段名称) = 0表示该字段不含有2,find_in_set(2, 字段名称) >= 1表示该字段含有2,举个例子:

select find_in_set('2',  '1,2,3,4,5') as test;
-> 2
 select find_in_set('2', '12,23,26,29') as test;
-> 0

locate

它也是一个mysql字符串函数,方法如下:locate(单个字符串, 字段名称),和find_in_set用法相似,那它俩有没有区别的呢,看如下例子:

执行sql语句:

select find_in_set('13', '3,6,13,24,33,36') as test;

-> 3
select locate('13', '3,6,13,24,33,36') as test;

-> 5

这下知道区别了吧!

理解了它们的用法和区别,在实际的项目的过程中就可以灵活使用咯。