sql判断以逗号分隔的字符串中是否包含某个字符串,不是模糊查询 您所在的位置:网站首页 sql逗号拼接 sql判断以逗号分隔的字符串中是否包含某个字符串,不是模糊查询

sql判断以逗号分隔的字符串中是否包含某个字符串,不是模糊查询

2024-05-26 01:19| 来源: 网络整理| 查看: 265

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 实验室设备网 版权所有