MySQLテーブルには、status= NULLの行と、status=0の行があります。
クエリでそれらを選択する場合:
SELECT *
FROM `table`
WHERE `status` != 0
0これはとの両方の値を無視しNULLます。
値のみを無視するにはどうすれば0よいですか?
MySQLテーブルには、status= NULLの行と、status=0の行があります。
クエリでそれらを選択する場合:
SELECT *
FROM `table`
WHERE `status` != 0
0これはとの両方の値を無視しNULLます。
値のみを無視するにはどうすれば0よいですか?
is null次の述語を使用できます。
status数値フィールドの場合:
SELECT *
FROM `table`
WHERE `status` != 0
OR `status` IS NULL
statusテキストフィールドの場合:
SELECT *
FROM `table`
WHERE `status` != '0'
OR `status` IS NULL
これは、 がとして評価され、 が として評価さNULL != 0れるため機能します。包含条件が と評価される行は拒否されます。NULLNULL OR TRUETRUENULL
あなたのsqlfiddleから判断すると、それstatusはテキスト型であるように見えるので、これがあなたが望むものです:
SELECT *
FROM mytable
WHERE status IS NULL
OR status != '0'
試してないけどこれかな?
SELECT *
FROM `table`
WHERE `status` IS NULL OR `status` != 0
両方を除外する場合:
SELECT *
FROM mytable
WHERE COALESCE(status,0) <> 0
;
null セーフの equals 演算子を使用できます...
SELECT status
FROM mytable
WHERE not (status <=> 0);
null単なる別の値 と見なします。通常の比較で得られる と0 <=> nullは対照的に、 falseです。null
ここでの他の回答と同様に、status列がたまたま (var)char 型である場合は 0 を引用してください。