レコードをフィルタリングしたい...
Statusidがnullの場合、レコードをフィルタリングします(statusIdがnullではない場合)
Statusidがnullでない場合、statusidが指定されたstatusidと等しいレコードをフィルタリングします。
どうすればいいですか?
あなたが言ったように
select * from tbl where statusid is null
または
select * from tbl where statusid is not null
ステータスIDがnullでない場合、実際の値があれば問題なく選択されます。考えていれば「if」ロジックは不要です
select * from tbl where statusid = 123 -- the record(s) returned will not have null statusid
nullまたは値の場所を選択する場合は、試してください
select * from tbl where statusid = 123 or statusid is null
Statusid = statusidはどうでしょう。 NULLは決してNULLと等しくなりません。
WHERE something IS NULL
そして
WHERE something IS NOT NULL
ansi_nullsをオフに設定しますselect * from table t inner join otherTable o on t.statusid = o.statusid go set ansi_nulls on go
列のNULL値を確認しようとする場合は常に、使用する必要があります
無効です そして NULLではない
= NULLまたは== NULLは使用しないでください
例(NULL)
select * from user_registration where registered_time IS NULL
registered_time
値がNULL
である行を返します
例(NOT NULL)
select * from user_registration where registered_time IS NOT NULL
registered_time
値がNOT NULL
である行を返します
注:キーワードnull
、not null
およびis
はnot case sensitive
です。
私はこれがうまくいくと思う:
select * from tbl where statusid = isnull(@statusid,statusid)