1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[SQLServer] NULL置換する方法

Posted at

NULL徹底攻略

前書き

こんにちは。かわんちゅです。
前回、NULLの定義と簡単なNULLの使い分けについて解説しました。

今回はSQL文における天敵:NULLを適切に処理できる関数などをまとめたいと思います。
NULLで困ったときに、読んでほしいです。

今回使うテーブルは以下になります。

image.png

目次

NULLを置換する関数
ISNULL関数
COALESCE関数
CASE関数

NULLを置換する関数

ISNULL関数

メリット
NULLの値を指定した文字列に変換することができる。
一時的に文字列に変換される、中のテーブルデータが変更されるわけではない。
 ※IS NULL 演算子とは違うので注意が必要

ISNULL文法
ISNULL(,変換したい文字列)

実例

名前列がNULLの時に、ヌル太郎に変換するSELECT文
SELECT ISNULL(Name,'ヌル太郎') as 'Name' FROM LIBRARY

実行結果
image.png

ただ、本来の全行の名前はNULLのままです。
ISNULLにより、中の値が変わるわけではないので、どんどん使っていきましょう。

全行の名前を取得するSELECT文
SELECT Name FROM LIBRARY

実行結果
image.png

COALESCE関数

NULLの値を指定した文字列に変換することができる。
一時的に文字列に変換される、中のテーブルデータが変更されるわけではない。
ISNULLよりデータ型に厳しい

COALESCE文法
COALESCE(列名,変換したい文字列)

実例

NameのNULLをヌル太郎に変換し、出力するSELECT文
SELECT COALESCE(Name,'ヌル太郎') AS 'Name' FROM LIBRARY

実行結果
image.png

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

実行結果
image.png

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?