こんにちは私はSQLクエリでのNULL条件チェックに関する問題に直面しています。
次の画像は、NULL値の列「sync」を持つテーブルsession_testsetの行を選択するためのものです。
NULL値の行が1つありますが、0レコードを返しています。
そして、条件を変えて「NOTNULL」をチェックすると。記録を返しています。
しかし、それは間違っています。なぜそれが起こっているのですか?
そしてこれが私のテーブル構造です
私の知る限り、のようなクエリを使用すると、SELECT * FROM table_name WHERE column_name IS NULL
値がない列が返されます。これは、埋められていないことを意味します。テーブルにNULL
値があります。列にNULL値を配置せずにコードを確認してください。
アナズはあなたが必要としているものを正確に与えてくれたと思います。
列に値がないことは、
ISNULLおよびISNOTNULLを使用しようとしているときに値'NULL'が含まれていることと同じではありません。
サンプルDBでテストクエリを試しましたが、これらのクエリは問題なく機能します。
1. SELECT * FROM sample_db WHERE name IS NULL; //returns row where name
column has no value
2. SELECT * FROM sample_db WHERE name IS NOT NULL; //returns row where name
column has values
select * from session_testset where sync is null or sync = '';
また
select * from session_testset where ifnull(sync , '') = '';
また
select * from session_testset where coalesce(sync , '') = '';
また
select * from session_testset where ifnull(length(sync ), 0) = 0;