我對最好的解決方法毫無頭緒。當前查詢很好。問題是我想if語句爲true,如果沒有行返回。我也不想兩次寫這個查詢,所以我怎麼寫這個if語句是真的並且運行?如果用NoRows或Int命令? sql
IF (select AnInt from ATable where Cond) = expectedInt
begin ... end
我對最好的解決方法毫無頭緒。當前查詢很好。問題是我想if語句爲true,如果沒有行返回。我也不想兩次寫這個查詢,所以我怎麼寫這個if語句是真的並且運行?如果用NoRows或Int命令? sql
IF (select AnInt from ATable where Cond) = expectedInt
begin ... end
如果NULL
AnInt
是不可能的,那麼你可以作出不匹配等於expectedInt
IF isnull((select AnInt from ATable where Cond), expectedInt) = expectedInt
好的一點是,該列不能爲空 –
IF Coalesce((select TOP 1 AnInt from ATable where Cond),expectedInt) = expectedInt
begin
end
+1最好使用isnull,但由於coalesce會執行兩次查詢。 –
空子選擇的結果是你的子查詢保證返回不超過1個行? –
@MartinSmith:是 – BruteCode