「MySQL - COALESCE関数」の版間の差分

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動
(ページの作成:「== 概要 == COALESCE関数は、引数として渡された値の中から最初の非NULL値を返す関数である。<br> <br> この関数はNULLをデフォルト値に置き換えることができるため、複数の列から最初の有効な値を取得あるいはレポート作成時にNULLを見やすい表示に変換することができる。<br> <br> <u>※注意</u><br> <u>全ての引数がNULLの場合は、NULLを返す。</u><br> <u>引数の…」)
 
編集の要約なし
 
1行目: 1行目:
== 概要 ==
== 概要 ==
COALESCE関数は、引数として渡された値の中から最初の非NULL値を返す関数である。<br>
COALESCE関数は、引数として渡された値の中から最初の非NULL値を返す関数である。<br>
COALESCE関数はSQL標準の関数であり、主要なRDBMSで同じように使用できるため、MySQL、SQL Server、PostgreSQL、Oracle等で共通して使用できる。<br>
<br>
<br>
この関数はNULLをデフォルト値に置き換えることができるため、複数の列から最初の有効な値を取得あるいはレポート作成時にNULLを見やすい表示に変換することができる。<br>
この関数はNULLをデフォルト値に置き換えることができるため、複数の列から最初の有効な値を取得あるいはレポート作成時にNULLを見やすい表示に変換することができる。<br>
11行目: 12行目:
== 基本構文 ==
== 基本構文 ==
  <syntaxhighlight lang="mysql">
  <syntaxhighlight lang="mysql">
  COALESCE(value1, value2, value3, ...)
  COALESCE(<値1>, <値2>, <値3>, ...)
  </syntaxhighlight>
  </syntaxhighlight>
<br><br>
<br><br>
34行目: 35行目:
  SELECT name, phone_number1, phone_number2, COALESCE(phone_number1, phone_number2, '連絡先なし') as contact
  SELECT name, phone_number1, phone_number2, COALESCE(phone_number1, phone_number2, '連絡先なし') as contact
  FROM customers;
  FROM customers;
</syntaxhighlight>
<br><br>
== IFNULL関数 (MySQL) ==
MySQLには、IFNULL関数のような独自の代替関数もある。<br>
ただし、2つの引数のみしか指定できない。<br>
<br>
<syntaxhighlight lang="mysql">
-- MySQLの独自関数
IFNULL(<値1>, <値2>)  -- 2つの引数のみ
-- または
IF(<条件>, <値1>, <値2>)
  </syntaxhighlight>
  </syntaxhighlight>
<br><br>
<br><br>

2024年11月27日 (水) 00:03時点における最新版

概要

COALESCE関数は、引数として渡された値の中から最初の非NULL値を返す関数である。
COALESCE関数はSQL標準の関数であり、主要なRDBMSで同じように使用できるため、MySQL、SQL Server、PostgreSQL、Oracle等で共通して使用できる。

この関数はNULLをデフォルト値に置き換えることができるため、複数の列から最初の有効な値を取得あるいはレポート作成時にNULLを見やすい表示に変換することができる。

※注意
全ての引数がNULLの場合は、NULLを返す。
引数の型は、互換性がある必要がある。(例: 数値型同士、文字列型同士)


基本構文

 COALESCE(<値1>, <値2>, <値3>, ...)



使用例

 -- 例 1
 -- NULLをスキップして最初の非NULL値の1を返す
 SELECT COALESCE(NULL, 1, 2);     -- 結果: 1
 
 -- 例 2
 -- 2つのNULLをスキップして3を返す
 SELECT COALESCE(NULL, NULL, 3);  -- 結果: 3
 
 -- 例 3
 -- 最初の値が非NULLのため、それを返す
 SELECT COALESCE(10, 20, 30);     -- 結果: 10
 
 -- 例 4
 -- phone_number1がNULLの場合は、phone_number2
 -- phone_number2もNULLの場合は、'連絡先なし'を返す
 SELECT name, phone_number1, phone_number2, COALESCE(phone_number1, phone_number2, '連絡先なし') as contact
 FROM customers;



IFNULL関数 (MySQL)

MySQLには、IFNULL関数のような独自の代替関数もある。
ただし、2つの引数のみしか指定できない。

 -- MySQLの独自関数
 
 IFNULL(<値1>, <値2>)  -- 2つの引数のみ
 -- または
 IF(<条件>, <値1>, <値2>)