T SQL 多值模糊查詢的處理

2021-09-08 15:04:01 字數 1576 閱讀 8369

多值模糊查詢的處理

所謂多值模糊查詢,就是應用程式中傳遞過來多個引數,對這些引數做拆分,拆分之後,對拆分結果的key值分別做模糊查詢處理

對於精確匹配時,不管是單個key值還是多個key值,都很容易處理,備選方案也很多

對於模糊查詢,單個key值也很容易,也就是 ……where name like '%parameter%'(不要告訴我全模糊效率低之類的,我這裡不是做效能對比的)

但是對於多個key值的模糊處理,就不是太直接了,比如name欄位,輸入'三,四,五',要求分別按照三,四,五三個字元做模糊匹配

create

table

[dbo

].[student](

[s#][

varchar

](50) null

,

[sname][

varchar

](50) null

,

[s***][

varchar

](2) null

)insert

into student values (1,'

張三',1

)insert

into student values (2,'

李四',1

)insert

into student values (3,'

王五',1

)insert

into student values (4,'

趙六',1

)insert

into student values (5,'

孫七',1)--

精確匹配的話,不管是單值還是多值,都很好處理

select

*from student where sname in ('

張三','李四'

)--單值模糊的好處理

select

*from student where sname like

'%五%'--

多值模糊匹配,就沒有這麼直接了

--所謂的多值模糊匹配,就是外面傳遞進來多個值,這些值差分開之後,每個值都做模糊查詢

--sql既要寫滿足功能性需求,又要簡明的清晰,一開始還想寫函式什麼玩意的,

--後來想了想,可以這麼處理

;with

ctenameas(

--這是乙個字串拆分函式

select id,concat('

%',s,'

%') as name from dbo.f_splitstrtotable('

四,五,六

',',')

)select

*from

student

where

exists

(

select

1from ctename where sname like

name)--

查詢結果

s# sname s***

2 李四 1

3 王五 1

4 趙六 1

(3 row(s) affected)

T SQL 多值模糊查詢的處理

原文 t sql 多值模糊查詢的處理 多值模糊查詢的處理 所謂多值模糊查詢,就是應用程式中傳遞過來多個引數,對這些引數做拆分,拆分之後,對拆分結果的key值分別做模糊查詢處理 對於精確匹配時,不管是單個key值還是多個key值,都很容易處理,備選方案也很多 對於模糊查詢,單個key值也很容易,也就是...

多值模糊查詢報表的製作

但是使用者的需求往往是無止境的!最典型就是把這兩種好使的方法結合起來,也就是兩種查詢的結合 在引數框中輸入多個關鍵字,根據多個關鍵字進行模糊查詢。比如,使用者要根據產品名稱進行多值模糊查詢,當輸入為 乳酪,糖 時,希望找出產品名稱中含有乳酪或糖的產品列表,如下圖所示 為了程式猿哥哥可以早日跟加班 s...

多值模糊查詢報表的製作

但是使用者的需求往往是無止境的!最典型就是把這兩種好使的方法結合起來,也就是兩種查詢的結合 在引數框中輸入多個關鍵字,根據多個關鍵字進行模糊查詢。比如,使用者要根據產品名稱進行多值模糊查詢,當輸入為 乳酪,糖 時,希望找出產品名稱中含有乳酪或糖的產品列表,如下圖所示 為了程式猿哥哥可以早日跟加班 s...