sql 查询-字段里是逗号,分隔开的数组,查询匹配数据

网友投稿 287 2022-09-25

sql 查询-字段里是逗号,分隔开的数组,查询匹配数据

数据项

ID

Name

TypeIDArray

1

小明

1,2,3,4,5,6,7,8,9

2

小王

2,1,3,4,5,6,7,8,9

3

小红

1,2,10,11,12,13,14,15

4

小刘

2,1,10,11,12,13,14,15

5

小曾        

2,3,12,20,21,22,23,24

6

小霏        

3,2,12,20,21,22,23,24

第一种:charindex()查询方式

select * from Test where charindex(','+'11'+',',','+TypeIDArray+',')>0

结果

3    小红            1,2,10,11,12,13,14,15 4    小刘            2,1,10,11,12,13,14,15

代码解释:

​​Sql Server函数全解(一)字符串函数​​ 匹配字符串开始位置的函数CHARINDEX(str1,str,[start])CHARINDEX(str1,str,[start])函数返回子字符串str1在字符串str中的开始位置,start为搜索的开始位置,如果指定start参数,则从指定位置开始搜索;如果不指定start参数或者指定为0或者负值,则从字符串开始位置搜索。 eg: select CHARINDEX('a','banana'),CHARINDEX('a','banana',4), CHARINDEX('na','banana', 4);CHARINDEX('a','banana')返回字符串'banana'中子字符串‘a’ 第一次出现的位置,结果为2; CHARINDEX('a','banana',4)返回字符串'banana'中从第4个位置开始子字符串‘a’的位置,结果为4; CHARINDEX('na','banana', 4)返回从第4个位置开始子字符串‘na’第一次出现的位置,结果为5

select * from Test where charindex(','+'11'+',',','+TypeIDArray+',')>0

解释:

用charindex 索引(‘,11,’)在字段“TypeIDArray”的位置,且,只显示大于0的数据

代码逐行运行时,显示的是“TypeIDArray”字段的值

如 ID=1小明的“TypeIDArray”字段的值是 (1,2,3,4,5,6,7,8,9)

代码是(','+TypeIDArray+',')等于(‘,1,2,3,4,5,6,7,8,9,’)到这里我想各位看官就明白了

第二种:where Like查询方式

select * from Test where ','+TypeIDArray+',' Like '%,'+'11'+',%'

结果

3    小红            1,2,10,11,12,13,14,15 4    小刘            2,1,10,11,12,13,14,15

解释:

Like语句大家都熟悉了,我就不详细介绍,只简单说说大家看不太理解的

代码逐行运行时,显示的是“TypeIDArray”字段的值

如 ID=1小明的“TypeIDArray”字段的值是 (1,2,3,4,5,6,7,8,9)

代码是(','+TypeIDArray+',')等于(‘,1,2,3,4,5,6,7,8,9,’)到这里我想各位看官就明白了

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:东京电影节中国内地入围片单公布;剧版《指环王》复拍!
下一篇:layui的checkbox全选,反选,取消 只需要3行代码
相关文章

 发表评论

暂时没有评论,来抢沙发吧~