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函數全解(一)字符串函數

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM