[SQL]NULL処理:IFNULL,CASE


🔭 プログラマSQL質問:NULLの処理

私が初めて使ったコードは以下の通りです.
SELECT ANIMAL_TYPE, NAME, SEX_UPON_INTAKE
FROM AINMAL_INS
WHERE NAME IS NULL;

まちがった理由


NULL値の行を見つけたらどうしますか?
最初に作成したクエリは、NAMEがNULL値の場合の行であるWHEREセクションのみを出力します.NULLを出力するのではなくNULLに値を変更する必要があります.これは後続の操作です(?)タイトルのように、NULLの扱い方がわかりません.

解決策


IFNULLの使用
答えは簡単です.非常に基本的な...
「その値がNULLならNonameに変えよう!考えてみればいい.

正しいコード

SELECT ANIMAL_TYPE, IFNULL(NAME, 'No name') AS NAME, SEX_UPON_INTAKE 
FROM ANIMAL_INS 
ORDER BY ANIMAL_ID;

NULLの関数の処理


NULLを扱う関数はIFNULL,CASEである.順番に見てみます.

IFNULL

IFNULLは関数で、NULLの場合は別の値に置き換えられます.IFNULLのように
# IFNULL 사용 방법

SELECT IFNULL(Column, "Null일 경우 대체 값") FROM 테이블명;   

CASE

CASEは、条件を使用してTRUE、FALSEに従って値を設定することができる.
# CASE 사용 방법

CASE
	WHEN 조건식1 THEN1
    WHEN 조건식2 THEN2
    ...
    ELSE 조건에 맞는 경우가 없는 경우 실행할 식
END
もし、CASEを使用して正解を解いたら、次のように書くことができます.今回の問題は複数の条件があるわけではないので、IFNULLを使うとより簡潔に見えます.
SELECT ANIMAL_TYPE, 
(CASE
    WHEN NAME IS NULL THEN 'No name'
    ELSE NAME
 END) AS NAME, SEX_UPON_INTAKE 
 FROM ANIMAL_INS 
 ORDER BY ANIMAL_ID;