T-SQL---多值模糊查詢的處理

    

多值模糊查詢的處理

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

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

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

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

 

多值模糊查詢可以參考如下的方式處理,歡迎提供更好的辦法,謝謝了

複製代碼

CREATE TABLE [dbo].[Student](    [S#] [varchar](50) NULL,    [Sname] [varchar](50) NULL,    [Ssex] [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 Studentwhere exists(    select 1 from CTEName where Sname like name
)--查詢結果S# Sname Ssex2 李四 13 王五 14 趙六 1(3 row(s) affected)

複製代碼


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章