指摘・レビュー記述難易度 標準

削除されていない(deleted_at が NULL の)行を出したい。この SQL を正しく直して書いてください。

SELECT * FROM users WHERE deleted_at = NULL;

正答

正答SELECT * FROM users WHERE deleted_at IS NULL;

解説

NULL は「値が分からない」を表すので、= で比べた結果も真でも偽でもない NULL になる。WHERE は結果が真の行だけを残すため、deleted_at = NULL は 1 行も返さない。構文エラーにはならないので気づきにくい。正しくは deleted_at IS NULL。= 'NULL' とクォートで囲む直し方は誤りで、4 文字の文字列 'NULL' と比べることになり、NULL の行は返らない。

参考: www.sqlite.org

sqlnull

この問題を含む 指摘・レビュー のテストを制限時間つきで解く

指摘・レビュークイズへ