sql >> データベース >  >> RDS >> Mysql

MySQLでNull値を比較する方法

    場合によっては、列を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を無料でお試しください。

    1. Android-textViewにログインした後、sqliteデータベースからユーザー名を表示します

    2. Oracle異種サービスでのMySQLの使用

    3. ループのないセットまたはシーケンスを生成する–パート1

    4. JDK8を使用するMacOSにOracleSQLDeveloper19.1をインストールします。