[MYSQL] CASE文でNULL分岐に引っかかった話 | 株式会社アースリンク

2021年5月17日

[MYSQL] CASE文でNULL分岐に引っかかった話

<img alt="" class="alignnone size-medium wp-image-7772" height="100" src="https://www.earthlink.co.jp/manage/wp-content/uploads/2021/05/database-2394312_1920-300x100.jpg" width="300" />
例として以下のようなデータが入っている「user」テーブルあるとします。
id name
1 Aさん
2 Bさん
3 Cさん
4 NULL

case文でnameのデータがNULLの場合は×、それ以外の場合は○と表示するカラムを追加したいです。
私が引っかかった際のSQL文が以下になります。

SELECT *, 
    CASE name
        WHEN NULL THEN &#39;&times;&#39; 
        ELSE &#39;○&#39;
    END as &#39;名前確認&#39;
FROM testdb.user

上記のSQL文を実行した場合、nameのデータがNULLの場合でも○と表示されてしまいます。

id name 名前確認
1 Aさん
2 Bさん
3 Cさん
4 NULL

NULLかどうか判定するには「IS NULL」を使って書くのが正しいです

以下のSQLが正常に動いたものです。

SELECT *, 
    CASE name IS NULL 
        WHEN 1 THEN &#39;&times;&#39; 
        ELSE &#39;○&#39;
    END as &#39;名前確認&#39;
FROM testdb.user

IS NULLを使い、1(真)の場合は「×」とする事で正常に動きました。

id name 名前確認
1 Aさん
2 Bさん
3 Cさん
4 NULL ×

 

Contact
お問い合わせ

電話番号0120 - 889 - 236

受付時間:平日 9:00-18:00