sql判断以逗号分隔的字符串中是否包含某个字符串,不是模糊查询 | 您所在的位置:网站首页 › sql逗号拼接 › sql判断以逗号分隔的字符串中是否包含某个字符串,不是模糊查询 |
sql语句中,以逗号分隔的字符串中是否包含某个特定字符串,类似于判断一个数组中是否包含某一个元素,例如:判断 ,a,b,c,d,e,f,g, 中是否包含 a ,sql语句如何实现? SQL中没有类似VB中的Split的函数。此时,如要匹配 ,6,3,9,22,中的6。可用charindex函数巧妙实现:(注意红色的逗号) charindex( ',' +cast(6 as varchar)+ ',',‘,6,3,9,22,’)>0 sqlserver:sqlserver中没有封装好的方法可以实现该功能,可以通过 CHARINDEX(','+ ele +',' , ','+str+',') 来实现,str是一个以逗号分隔的字符串,ele是一个特定字符串,该方法表示判断str中是否包含ele,若值大于0,则表示包含,否则不包含。这里通常会有一个误区:通过使用%模糊匹配来判断,举个该方法不成立的例子,若使用模糊匹配判断 'b,ab,aba,bc,c' 中是否包含字符串 'a',得到的结果是包含,但实际答案是否定的。 实例: SELECT * FROM [news] t where charindex( ',' +'a'+',',t.news_tag)>0换成 like 相当于 like '%,a,%' 如果写成 SELECT * FROM [news] t where charindex( 'a',t.news_tag)>0 ,换成 like 相当于 like '%a%' ,字段 a,ab,c,d,e,f,g 则会把 ab也取出来,所以不能这么写, 而是要在字符串前后各家一个逗号 ,a,b,c,d,e,f,g, 并且查询语句写成 SELECT * FROM [news] t where charindex( ',' +'a'+',',t.news_tag)>0 换成 like 相当于 like '%,a,%' SELECT * FROM [news] t where like '%,a,%'
mysql:mysql中有一个方法 FIND_IN_SET(ele, str),str是一个以逗号分隔的字符串,ele是一个特定字符串,该方法表示判断str中是否包含ele。
|
CopyRight 2018-2019 实验室设备网 版权所有 |