检查SQL Server中的列中是否包含一组值

检查SQL Server中的列中是否包含一组值,sql,charindex,Sql,Charindex,我试图检查某个列是否有如下内容: SELECT Id, CASE CHARINDEX(Name,'Value A') WHEN 0 THEN '0' ELSE '1' END FROM TABLE 这适用于测试值A;现在我想检查多个值。例如,我想检查Name是否与值A、值B、值C中的任何一个匹配CHARINDEX一次只允许一个 有办法做到这一点吗 SELECT id, iif (Name LIKE '%Value A%' OR Name LIKE '%Value B%',

我试图检查某个列是否有如下内容:

SELECT Id,
CASE CHARINDEX(Name,'Value A') WHEN 0 THEN '0'
      ELSE '1'
END
FROM TABLE
这适用于测试
值A
;现在我想检查多个值。例如,我想检查
Name
是否与
值A
值B
值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;

你想要其中任何一个吗?我忘了提到我不能使用contains。哪个版本的?我想要任何一个值。基本上,我想检查值列表中的值是否与列值匹配。SQL Server 2012这对我来说是可行的,我只需要在查询之外构建iif语句,因为值的数量可能是动态的。感谢LOT我可以在select语句中添加IN()吗?
IN()
仅适用于精确匹配,没有
%
通配符。未知数量的值是来自数据库中的表还是来自应用程序?它来自应用程序