mysql语句中判断是否包含某字符串的⽅法
当我们需要对数据做筛选和查询的时候,往往会涉及到⼀些限制条件的判断,今天就分享⼀个判断字符串的技巧。
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
这下知道区别了吧!
理解了它们的⽤法和区别,在实际的项⽬的过程中就可以灵活使⽤咯。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论