NULL徹底攻略
前書き
こんにちは。かわんちゅです。
前回、NULLの定義と簡単なNULLの使い分けについて解説しました。
今回はSQL文における天敵:NULLを適切に処理できる関数などをまとめたいと思います。
NULLで困ったときに、読んでほしいです。
今回使うテーブルは以下になります。
目次
NULLを置換する関数
・ISNULL関数
・COALESCE関数
・CASE関数
NULLを置換する関数
ISNULL関数
メリット
・NULLの値を指定した文字列に変換することができる。
・一時的に文字列に変換される、中のテーブルデータが変更されるわけではない。
※IS NULL 演算子とは違うので注意が必要
ISNULL文法
ISNULL(列,変換したい文字列)
実例
名前列がNULLの時に、ヌル太郎に変換するSELECT文
SELECT ISNULL(Name,'ヌル太郎') as 'Name' FROM LIBRARY
ただ、本来の全行の名前はNULLのままです。
ISNULLにより、中の値が変わるわけではないので、どんどん使っていきましょう。
全行の名前を取得するSELECT文
SELECT Name FROM LIBRARY
COALESCE関数
・NULLの値を指定した文字列に変換することができる。
・一時的に文字列に変換される、中のテーブルデータが変更されるわけではない。
・ISNULLよりデータ型に厳しい
COALESCE文法
COALESCE(列名,変換したい文字列)
実例
NameのNULLをヌル太郎に変換し、出力するSELECT文
SELECT COALESCE(Name,'ヌル太郎') AS 'Name' FROM LIBRARY
CASE関数
メリット
・条件を指定することでNULLをほかの値に変換できる。
・ISNULL同様、中のデータが変換されるわけではない。
・条件の設定次第では、NULL以外の数字の返還も可能である
・if文のような感じである
CASE文法
CASE WHEN 条件 THEN 結果1 ELSE 結果2 END
実例
[Name]列がNULL場合に置換を行うCASEを用いたSELECT文
SELECT CASE WHEN [Name] IS NULL THEN 'ヌル太郎' ELSE [Name] END as 'Name' FROM LIBRARY