NULL または IS NULL を含む IN 句 質問する

NULL または IS NULL を含む IN 句 質問する

Postgresはデータベースです

IN 句に NULL 値を使用できますか? 例:

SELECT *
FROM tbl_name
WHERE id_field IN ('value1', 'value2', 'value3', NULL)

これら 4 つの値に制限したいと思います。

上記のステートメントを試しましたが、機能しません。実行はされますが、NULL id_fields を持つレコードは追加されません。

OR 条件を追加しようとしましたが、これではクエリがいつまでも実行され、終わりがわかりません。

SELECT *
FROM tbl_name
WHERE other_condition = bar
AND another_condition = foo
AND id_field IN ('value1', 'value2', 'value3')
OR id_field IS NULL

助言がありますか?

ベストアンサー1

ステートメントinは と同じように解析されますfield=val1 or field=val2 or field=val3。そこに null を入れると となり、field=null機能しなくなります。

コメントによるマーク・B

わかりやすくするためにこれをやります

SELECT *
FROM tbl_name
WHERE 
(id_field IN ('value1', 'value2', 'value3') OR id_field IS NULL)

おすすめ記事