場合によっては、列をnull値と比較したり、一方がnull値を持つ2つの列を比較したり、列に対してnullチェックを実行したりする必要があります。この記事では、MySQLでnull値を比較する方法を見ていきます。 MySQLでのNull比較に使用できます。
MySQLでNull値を比較する方法
次のテーブルがあるとしますsales(id、order_date、cost_price、selling_price)
mysql> create table sales( id int, order_date date, cost_price int, selling_price int); mysql> describe sales; +---------------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------------+---------+------+-----+---------+-------+ | id | int(11) | YES | | NULL | | | order_date | date | YES | | NULL | | | cost_price | int(11) | YES | | NULL | | | selling_price | int(11) | YES | | NULL | | +---------------+---------+------+-----+---------+-------+ mysql> insert into sales(id,order_date,cost_price,selling_price) values(1,'2020-11-01',150,250), (2,'2020-11-02',200,300); mysql> insert into sales(id,order_date, cost_price) values(3, '2020-11-03',100); mysql> insert into sales(id,order_date, selling_price) values(4, '2020-11-03',100); mysql> select * from sales; +------+------------+------------+---------------+ | id | order_date | cost_price | selling_price | +------+------------+------------+---------------+ | 1 | 2020-11-01 | 150 | 250 | | 2 | 2020-11-02 | 200 | 300 | | 3 | 2020-11-03 | 100 | NULL | | 4 | 2020-11-03 | NULL | 100 | +------+------------+------------+---------------+
原価がnullの行を選択するとします。通常、 cost_price =nullなどの式を使用します ただし、NULL値では機能しません。 null比較の場合は、 ISを使用する必要があります 演算子、つまり、 cost_price IS null
したがって、次のSQLクエリは機能しません
mysql> select * from sales where cost_price=null; Empty set (0.00 sec)
次のSQLクエリは機能します 。これは、cost_priceがnullである行を選択するためのSQLクエリです。
mysql> select * from sales where cost_price is null; +------+------------+------------+---------------+ | id | order_date | cost_price | selling_price | +------+------------+------------+---------------+ | 4 | 2020-11-03 | NULL | 100 | +------+------------+------------+---------------+
また読む:MySQLで2つの列を比較する方法
同様に、cost_priceがNULLでない行を選択するためのSQLクエリを次に示します。この場合、 IS NOTを使用します オペレーター。
mysql> select * from sales where cost_price is not null; +------+------------+------------+---------------+ | id | order_date | cost_price | selling_price | +------+------------+------------+---------------+ | 1 | 2020-11-01 | 150 | 250 | | 2 | 2020-11-02 | 200 | 300 | | 3 | 2020-11-03 | 100 | NULL | +------+------------+------------+---------------+
UPDATE、INSERT、およびDELETEステートメントでISNULLおよびISNOTNULLを使用できます。
UPDATEステートメントを使用
mysql> update sales set selling_price=350 where cost_price is null; mysql> select * from sales; +------+------------+------------+---------------+ | id | order_date | cost_price | selling_price | +------+------------+------------+---------------+ | 1 | 2020-11-01 | 150 | 250 | | 2 | 2020-11-02 | 200 | 300 | | 3 | 2020-11-03 | 100 | NULL | | 4 | 2020-11-03 | NULL | 350 | +------+------------+------------+---------------+
また読む:MySQLでN行ごとに取得する方法
INSERTステートメントを使用
INSERTステートメントでMySQLNULL比較を使用する例を次に示します。
mysql> insert into new_sales(id,order_date, cost_price, selling_price) select * from sales where cost_price is null;
DELETEステートメントを使用
削除ステートメントでヌル比較を使用する例を次に示します。
mysql> delete from sales where cost_price is null; mysql> select * from sales; +------+------------+------------+---------------+ | id | order_date | cost_price | selling_price | +------+------------+------------+---------------+ | 1 | 2020-11-01 | 150 | 250 | | 2 | 2020-11-02 | 200 | 300 | | 3 | 2020-11-03 | 100 | NULL | +------+------------+------------+---------------+
うまくいけば、この記事がMySQLのNULL値を比較するのに役立つでしょう。 Ubiqを使用すると、データを簡単に視覚化し、リアルタイムのダッシュボードで監視できます。 Ubiqを無料でお試しください。