sql判断以逗号分隔的字符串中是否包含某个字符串

时间:2022-02-24 00:11:32

sql语句中,以逗号分隔的字符串中是否包含某个特定字符串,类似于判断一个数组中是否包含某一个元素,例如:判断 ’a,b,c,d,e,f,g‘ 中是否包含 'a',sql语句如何实现?

mysql:mysql中有一个方法 FIND_IN_SET(ele, str),str是一个以逗号分隔的字符串,ele是一个特定字符串,该方法表示判断str中是否包含ele。

sqlserver:sqlserver中没有封装好的方法可以实现该功能,可以通过 CHARINDEX(','+ ele +','  ,  ','+str+',') 来实现,str是一个以逗号分隔的字符串,ele是一个特定字符串,该方法表示判断str中是否包含ele,若值大于0,则表示包含,否则不包含。这里通常会有一个误区:通过使用%模糊匹配来判断,举个该方法不成立的例子,若使用模糊匹配判断 'b,ab,aba,bc,c' 中是否包含字符串 'a',得到的结果是包含,但实际答案是否定的。