web-dev-qa-db-ja.com

SQLクエリ-nullまたはnot nullでフィルタリングする方法

レコードをフィルタリングしたい...

Statusidがnullの場合、レコードをフィルタリングします(statusIdがnullではない場合)

Statusidがnullでない場合、statusidが指定されたstatusidと等しいレコードをフィルタリングします。

どうすればいいですか?

29
001

あなたが言ったように

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
53
JeremyWeir

Statusid = statusidはどうでしょう。 NULLは決してNULLと等しくなりません。

3
Zachary Scott
WHERE something IS NULL

そして

WHERE something IS NOT NULL
2
Dmitriy Naumov

ansi_nullsをオフに設定しますselect * from table t inner join otherTable o on t.statusid = o.statusid go set ansi_nulls on go

1
JStead

列の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である行を返します

注:キーワードnullnot nullおよびisnot case sensitiveです。

0
programmer

私はこれがうまくいくと思う:

select * from tbl where statusid = isnull(@statusid,statusid)
0
pcofre