检查SQL服务器中的列中是否包含一组值
Check if a group of values is contained in a column in SQL Server
我正在尝试检查某个列是否包含类似内容:
SELECT Id,
CASE CHARINDEX(Name,'Value A') WHEN 0 THEN '0'
ELSE '1'
END
FROM TABLE
这适用于测试 Value A
;现在我想检查多个值。例如,我想检查 Name
是否匹配 Value A
、Value B
、Value C
中的任何一个。 CHARINDEX
一次只允许一个。
有办法吗?
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;
我正在尝试检查某个列是否包含类似内容:
SELECT Id,
CASE CHARINDEX(Name,'Value A') WHEN 0 THEN '0'
ELSE '1'
END
FROM TABLE
这适用于测试 Value A
;现在我想检查多个值。例如,我想检查 Name
是否匹配 Value A
、Value B
、Value C
中的任何一个。 CHARINDEX
一次只允许一个。
有办法吗?
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;