1

MySQLテーブルには、status= NULLの行と、status=0の行があります。

クエリでそれらを選択する場合:

SELECT *
FROM `table`
WHERE `status` != 0

0これはとの両方の値を無視しNULLます。

値のみを無視するにはどうすれば0よいですか?

4

5 に答える 5

5

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

于 2012-12-06T19:24:33.723 に答える
1

あなたのsqlfiddleから判断すると、それstatusはテキスト型であるように見えるので、これがあなたが望むものです:

SELECT *
FROM mytable
WHERE status IS NULL
OR status != '0'
于 2012-12-06T19:28:44.140 に答える
1

試してないけどこれかな?

SELECT *
FROM `table`
WHERE `status` IS NULL OR `status` != 0
于 2012-12-06T19:24:44.253 に答える
0

両方を除外する場合:

SELECT *
FROM mytable
WHERE COALESCE(status,0)  <> 0
    ;
于 2012-12-06T19:36:51.250 に答える
0

null セーフの equals 演算子を使用できます...

SELECT status
FROM mytable
WHERE not (status <=> 0);

null単なる別の値 と見なします。通常の比較で得られる と0 <=> nullは対照的に、 falseです。null

ここでの他の回答と同様に、status列がたまたま (var)char 型である場合は 0 を引用してください。

于 2012-12-06T20:09:38.983 に答える