您好,登錄后才能下訂單哦!
多值模糊查詢的處理
所謂多值模糊查詢,就是應(yīng)用程序中傳遞過來多個參數(shù),對這些參數(shù)做拆分,拆分之后,對拆分結(jié)果的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 '%五%'--多值模糊匹配,就沒有這么直接了--所謂的多值模糊匹配,就是外面?zhèn)鬟f進(jìn)來多個值,這些值差分開之后,每個值都做模糊查詢--SQL既要寫滿足功能性需求,又要簡明的清晰,一開始還想寫函數(shù)什么玩意的,--后來想了想,可以這么處理;with CTENameas( --這是一個字符串拆分函數(shù) select id,concat('%',s,'%') as name from dbo.f_splitStrToTable('四,五,六',',') )select * from Studentwhere exists( select 1 from CTEName where Sname like name )--查詢結(jié)果S# Sname Ssex2 李四 13 王五 14 趙六 1(3 row(s) affected)
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。