在 Case When 表达式中使用 LIKE 运算符和 "greater than"

Using the LIKE operator and "greater than" in a Case When expression

这是我正在编写的单元测试中的一个部分。

如果列中的任何行包含特定字符串,我想说通过。所以换句话说,我想要的是 "if the number of row that contain astring is greater than zero than pass the test".

我有类似下面的代码,但没有说明 myVariable 需要声明。我做错了什么?

    DECLARE @myVariable BIT =
            (
                SELECT CASE
                           WHEN Count(Description) LIKE '%astring%' > 0
                                 THEN
                               1
                           ELSE
                               0
                       END
                FROM TABLE

SELECT @myVariable

我想你想要:

DECLARE @myVariable BIT =
        (SELECT (CASE WHEN Count(*) > 0 THEN 1 ELSE 0 END)
         FROM TABLE
         WHERE Description LIKE '%astring%' 
        );

我不会为此推荐 bit。 SQL 服务器并不真正支持布尔值。整数(甚至 tinyints)通常比 bits 更容易使用。

刚刚:

DECLARE @myVariable BIT = (
    SELECT MAX(CASE WHEN Description LIKE '%astring%' THEN 1 ELSE 0 END)
    FROM mytable
);

如果 table 中至少有一行具有与模式匹配的 Description,则将变量设置为 1

DECLARE @myVariable BIT=
     (
      SELECT IIF(ISNULL(count(*),0)>0,1,0) 
      FROM TABLE
      WHERE EXISTS(SELECT * FROM TABLE WHERE Description LIKE '%astring%')
     )

SELECT @myVariable AS myVariable