我想知道是否可以在WHERE
子句中更改运算符的情况下执行case语句。CASE WHERE更改运算符 - TSQL
我想要做的是过滤出基于布尔值的结果。
SELECT *
FROM table1
WHERE
CASE @Status
WHEN 1 THEN Name LIKE 'SOMETHING%'
WHEN 2 THEN Name NOT LIKE 'SOMETHING%'
END
我想知道这是否可能?
我想知道是否可以在WHERE
子句中更改运算符的情况下执行case语句。CASE WHERE更改运算符 - TSQL
我想要做的是过滤出基于布尔值的结果。
SELECT *
FROM table1
WHERE
CASE @Status
WHEN 1 THEN Name LIKE 'SOMETHING%'
WHEN 2 THEN Name NOT LIKE 'SOMETHING%'
END
我想知道这是否可能?
你可以不用一个SWITCH
表达式,像这样:
SELECT *
FROM table1
WHERE
(@Status = 1 AND Name LIKE 'SOMETHING%')
OR (@Status = 2 AND Name NOT LIKE 'SOMETHING%')
由于@Status
可一次等于只有一件事,在OR
表达的一个组成部分,将决定WHERE
的结果条件。
令人惊叹,如此简单,为什么我想不到那! –
逻辑位,我以前用过很多次,但逻辑很清楚。 –
可能重复的[使用CASE for WHERE field IN](http://stackoverflow.com/questions/14114815/using-case-for-where-field-in) –