在 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 服务器并不真正支持布尔值。整数(甚至 tinyint
s)通常比 bit
s 更容易使用。
刚刚:
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
这是我正在编写的单元测试中的一个部分。
如果列中的任何行包含特定字符串,我想说通过。所以换句话说,我想要的是 "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 服务器并不真正支持布尔值。整数(甚至 tinyint
s)通常比 bit
s 更容易使用。
刚刚:
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