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

48 篇文章 0 订阅

数据项

IDNameTypeIDArray
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,’)到这里我想各位看官就明白了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橙-极纪元JJY.Cheng

客官,1分钱也是爱,给个赏钱吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值