close

問題

最近在處理動態SQL語法的工作

剛好同事就問說有沒有辦法處理動態語法是使用"LIKE"

這真的是有給他困難到

之前在寫查詢語法時遇到多個LIKE條件

就必須乖乖的 ( Field_X like '%YYY%' OR Field_X like '%ZZZ%' .....)

一個一個列出來相當麻煩,也無法把他轉成固定式的語法


解法

使用 JOIN LIKE 可以解決這類型的問題

並且有更大的彈性去對多欄位多條件的處理

範例

--所要查詢的資料表
CREATE TABLE #MAIN_TABLE ( Code nvarchar(20), Name nvarchar(200) )
INSERT INTO #MAIN_TABLE
VALUES('AA01','Mary'),('AA02','Tom'),('AA03','Tony'),('AA04','Mark'),('AB01','Louis'),('AB02','Peter'),('BB01','Lucy'),('BB02','Paul'),('BB03','Mike'),('BC01','Lion')
--Like的查詢條件
CREATE TABLE #SEARCH_TABLE ( Field1 nvarchar(20), Field2 nvarchar(20) )
INSERT INTO #SEARCH_TABLE
VALUES('%AA%','T%'),('%BB%','M%')

--語法1 單一欄位多重Like條件
SELECT M.*
FROM #MAIN_TABLE as M join #SEARCH_TABLE as S
on M.Code LIKE S.Field1
--語法2 多重欄位多重Like條件
SELECT M.*
FROM #MAIN_TABLE as M join #SEARCH_TABLE as S
on M.Code LIKE S.Field1 and M.Name LIKE S.Field2

DROP TABLE #MAIN_TABLE
DROP TABLE #SEARCH_TABLE


在範例中,先行產生目標查詢資料表

在產生查詢條件的資料表

( 必須自行把多個LIKE條件拆解放入資料表中)

再來就很簡單的,使用 Join Table的方式去連結

在 on 後面使用 LIKE 語法

這樣就能達到多個LIKE條件的查詢語法

P.S. 記得查詢資料表中可以事先加入%、[、]....等符號

或是在on 的部分再加入,就看怎麼去使用

arrow
arrow
    文章標籤
    T-SQL SQL Server
    全站熱搜

    Louis 發表在 痞客邦 留言(0) 人氣()