在SQL-Server 2008中我該如何實現以下目標 -的if-else在where子句中的SQL服務器
select * from student
where
(
(if studentId is not null then studentId='x')
else
(firstName='abc' and age > 26)
)
我想避免重寫整個SELECT子句的任何條件分開。
在SQL-Server 2008中我該如何實現以下目標 -的if-else在where子句中的SQL服務器
select * from student
where
(
(if studentId is not null then studentId='x')
else
(firstName='abc' and age > 26)
)
我想避免重寫整個SELECT子句的任何條件分開。
你可以簡單地在你的WHERE
子句中使用的OR
:
SELECT *
FROM student
WHERE
studentId = 'x'
OR (firstname = 'abc' AND age > 26)
您可以在where
子句中使用case
聲明。你幾乎可以認爲case
語句,如SQL的 「一套基於」 一個if
聲明的版本 -
select *
from student
where
case
when studentId is not null and studentId = 'x'
then 1
when firstName='abc' and age > 26
then 2
else 0
end <> 2
更多關於case
陳述書
我想你需要爲OR的第二部分添加一個顯式的'AND studentId爲null'(假設我正確地閱讀這個問題,括號看起來有點奇怪),但是,是的,這是ans WER。 –
@lc。 - 不,不需要。 UPD:對不起,同意 - 在這個特別的措詞你是正確的。 –
@RogerWolf這取決於你如何閱讀問題中的「else」 –