teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記

2016/12/24 16:46

投稿

Panzer_vor
Panzer_vor

スコア1636

answer CHANGED
@@ -21,6 +21,11 @@
21
21
  下記のようにするとカラム1がNULLの場合に「hoge」という文字が返却されるようになります。
22
22
  `COALESCE(カラム1, 'hoge')`
23
23
 
24
+ 似たような機能として、
25
+ **IFNULL関数**というものがMySQLには存在しますが、
26
+ **ベンダ独自実装で他のDBMSには存在しない**ため、
27
+ COALESCEの利用をお勧めします。
28
+
24
29
  次に2.についてですが、
25
30
  COALESCE関数では一般的には**出力する型を統一しなければならない**というルールがあるので、
26
31
  そのルールに則ってやる必要があります。

1

項番のレイアウト変更

2016/12/24 16:46

投稿

Panzer_vor
Panzer_vor

スコア1636

answer CHANGED
@@ -8,20 +8,20 @@
8
8
  以下の2点の工夫が必要です。
9
9
  (MySQLだったら2点目は考慮せずに動くかもしれませんが・・・)
10
10
 
11
- NULLの場合には代替値を返却できる関数を利用する
11
+ 1.NULLの場合には代替値を返却できる関数を利用する
12
- DATE型自体には**空白文字はない**ので型を文字列型に統一する意味でキャストを行う
12
+ 2.DATE型自体には**空白文字はない**ので型を文字列型に統一する意味でキャストを行う
13
13
 
14
14
  今回のようなカラムごとに固有の処理を行う場合は、
15
15
  `SELECT * FROM テーブル名`のような記載はできません。
16
16
  前提としてカラム名を直接指定するSELECT文に置き換えましょう。
17
17
 
18
- では先ずですが、
18
+ では先ず1.ですが、
19
19
  MySQLにも標準SQL関数の1つである、**COALESCE関数**が実装されています。
20
20
  この関数は**最初にNULLとならない値を返すという機能**なので、
21
21
  下記のようにするとカラム1がNULLの場合に「hoge」という文字が返却されるようになります。
22
22
  `COALESCE(カラム1, 'hoge')`
23
23
 
24
- 次にについてですが、
24
+ 次に2.についてですが、
25
25
  COALESCE関数では一般的には**出力する型を統一しなければならない**というルールがあるので、
26
26
  そのルールに則ってやる必要があります。
27
27
  つまる所、日付型を文字列型にキャストしましょうというお話です。