2016-11-15 82 views
-1

我想檢查是否某列有這樣的:檢查一組值被包含在一個列在SQL Server

SELECT Id, 
CASE CHARINDEX(Name,'Value A') WHEN 0 THEN '0' 
     ELSE '1' 
END 
FROM TABLE 

這適用於測試Value A;現在我想檢查多個值。例如,我想檢查Name是否與Value AValue B,Value C中的任何一個匹配。 CHARINDEX一次只允許一個。

有一種方法可以做到這一點?

+0

你想要的任何那些在所有這些的? – mendosi

+0

我忘了提及我不能使用包含也。 – Mendes

+0

[tag:SQL-server]的哪個版本? – mendosi

回答

1
SELECT id, 
    iif (Name LIKE '%Value A%' OR Name LIKE '%Value B%', 1, 0) AS IsContainsTheValue 
    FROM Table; 

這假設值是靜態的,這似乎是你的問題的情況。

編輯完全匹配

Declare @matchValues Table (Value varchar(100)); 
-- maybe you could pass a table from the application?? 

SELECT id, 
    iif (v.Value Is Not Null, 1, 0) AS IsContainsTheValue 
    FROM Table AS t 
    LEFT JOIN @matchValues AS v On t.Name = v.Value; 
+0

這適用於我,我只需要在我的查詢外部構建該iif語句,因爲值的數量可以是動態的。非常感謝 – Mendes

+0

我可以在select語句中添加一個IN()嗎? – Mendes

+0

'In()'只適用於完全匹配,不需要'''通配符。 – mendosi

相關問題