我正在編寫一個查詢,其中我試圖在子查詢/ CTE中搜索通配符子字符串,並將此邏輯嵌套在CASE語句中。例如:在單個SQL語句中使用LIKE和IN以及子查詢
SELECT
CASE
WHEN '%' + text + '%' IN (SELECT Column1 FROM Table) THEN 'I am in Column1'
ELSE text END
FROM Table
不幸的是,它看起來像沒有辦法做到這一點。因爲我需要使用LIKE運算符,並且沒有辦法同時使用LIKE和IN。我將不得不單獨編寫每個LIKE語句,並且這將用於1000多行。有沒有人推薦更直接的解決方案?提前致謝!
- 編輯:對不起,每個評論有一些說明。一個更好的例子:
UserID | UserPeers | Gender
--------------------------------------------
Mike | Tom1, Bob1 | M
John | Tom1, Greg1 | M
Sally |Mike1, John1 | F
Sara | Sally1, Bob1 | F
在上表中,我需要尋找在UserPeers列子,看他們是否在用戶名欄中任何一個地方存在。在這種情況下成功返回的行將是Sally和Sara下的行,因爲'Mike'和'Sally'存在UserID下。
SELECT *
FROM Users
WHERE '%' + UserPeers + '%' LIKE (SELECT UserID FROM Users)
這裏返回的錯誤是: 子查詢返回多個值。當子查詢遵循=,!=,<,< =,>,> =或當子查詢用作表達式時,這是不允許的。
請用一些示例數據說明。怎麼處理條件? – OldProgrammer
不確定我關注。你只是想在同一行中將'text'列與'Column1'進行比較嗎? 「text」是變量還是列名? –
謝謝大家的廣泛迴應,Aaron的初步答案確實有效。被卡住了。謝謝一堆! – dmedz