数据项
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函数全解(一)字符串函数
https://www.cnblogs.com/wyt007/p/9432154.html#_label9
匹配字符串开始位置的函数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,’)到这里我想各位看官就明白了
————————————————
版权声明:本文为CSDN博主「cplvfx」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cplvfx/article/details/109576048