回答編集履歴

5

見直し

2020/02/11 11:40

投稿

退会済みユーザー
test CHANGED
@@ -66,8 +66,26 @@
66
66
 
67
67
  `COALESCE(メモ,'(メモはNULLです)')`
68
68
 
69
+
70
+
71
+ `COALESCE(NULL,'(メモはNULLです)')`
72
+
73
+ となり、
74
+
69
- 1つ目の引数メモがNULLだから
75
+ 1つ目の引数メモがNULLだから
70
76
 
71
77
  2つ目の引数'(メモはNULLです)'を評価してNULLじゃないので、
72
78
 
73
79
  結果「(メモはNULLです)」を返します。
80
+
81
+
82
+
83
+ メモが'自分へのご褒美'だと、
84
+
85
+ `COALESCE(メモ,'(メモはNULLです)')`
86
+
87
+
88
+
89
+ `COALESCE('自分へのご褒美','(メモはNULLです)')`
90
+
91
+ となり、1つ目がNULLじゃないので「自分へのご褒美」を返します。

4

見直し

2020/02/11 11:40

投稿

退会済みユーザー
test CHANGED
@@ -37,3 +37,37 @@
37
37
  としてもエラーにはなりません。
38
38
 
39
39
  カモメという名前のカラムとして扱われる正しい処理です。
40
+
41
+
42
+
43
+ ---
44
+
45
+
46
+
47
+ COALESCE()の引数は、複数個並べられます。
48
+
49
+ その、並べた左側から順に、NULLかどうか評価して、
50
+
51
+ NULLじゃない値であれば、その値を返します。
52
+
53
+ NULLだったばあいは、右隣の値を評価します。
54
+
55
+
56
+
57
+ `COALESCE(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'きさらぎ')`は
58
+
59
+ 適切に「きさらぎ」を返します。
60
+
61
+
62
+
63
+ テーブル家計簿に納まるデータを1行ずつ評価して、
64
+
65
+ カラム「メモ」がNULLの場合に、
66
+
67
+ `COALESCE(メモ,'(メモはNULLです)')`
68
+
69
+ の1つ目の引数メモがNULLだから
70
+
71
+ 2つ目の引数'(メモはNULLです)'を評価してNULLじゃないので、
72
+
73
+ 結果「(メモはNULLです)」を返します。

3

蛇足を削除

2020/02/11 11:37

投稿

退会済みユーザー
test CHANGED
@@ -37,35 +37,3 @@
37
37
  としてもエラーにはなりません。
38
38
 
39
39
  カモメという名前のカラムとして扱われる正しい処理です。
40
-
41
-
42
-
43
- ちょっとウザく書くと
44
-
45
- ```SQL
46
-
47
- SELECT 家計簿.日付, 家計簿.費目,
48
-
49
- COALESCE(家計簿.メモ,'メモはNULLです)') AS メモ,
50
-
51
- 家計簿.入金額, 家計簿.出金額
52
-
53
- FROM 家計簿
54
-
55
- ```
56
-
57
- であり、さらにウザく書くと
58
-
59
- ```SQL
60
-
61
- SELECT 家計簿.日付 AS 日付, 家計簿.費目 AS 費目,
62
-
63
- COALESCE(家計簿.メモ,'メモはNULLです)') AS メモ,
64
-
65
- 家計簿.入金額 AS 入金額, 家計簿.出金額 AS 出金額
66
-
67
- FROM 家計簿
68
-
69
- ```
70
-
71
- です。

2

見直し

2020/02/11 11:23

投稿

退会済みユーザー
test CHANGED
@@ -3,6 +3,14 @@
3
3
  テーブル「家計簿」のカラム「メモ」にNULLが含まれる可能性があることを考慮して、
4
4
 
5
5
  NULLだった場合に「(メモはNULLです)」を返すためにそう書いているようですね。
6
+
7
+ COALESCE()で加工しないで出力すると、
8
+
9
+ テーブル「家計簿」のカラム「メモ」にNULLだった場合に空欄として出力しているのが、
10
+
11
+ 最初の画像の状態だと察します。
12
+
13
+ (SQLを実行する環境によっては、「(NULL)」と表示したり、「\N」と表示したりするケースもありますが。)
6
14
 
7
15
 
8
16
 

1

見直し

2020/02/11 11:19

投稿

退会済みユーザー
test CHANGED
@@ -22,10 +22,42 @@
22
22
 
23
23
  `COALESCE(カモメ,'(メモはNULLです)') AS メモ`
24
24
 
25
- などと崩すとエラーになりますが、
25
+ などと崩すと、そんなカラムはないのでエラーになりますが、
26
26
 
27
27
  `COALESCE(メモ,'(メモはNULLです)') AS カモメ`
28
28
 
29
29
  としてもエラーにはなりません。
30
30
 
31
31
  カモメという名前のカラムとして扱われる正しい処理です。
32
+
33
+
34
+
35
+ ちょっとウザく書くと
36
+
37
+ ```SQL
38
+
39
+ SELECT 家計簿.日付, 家計簿.費目,
40
+
41
+ COALESCE(家計簿.メモ,'メモはNULLです)') AS メモ,
42
+
43
+ 家計簿.入金額, 家計簿.出金額
44
+
45
+ FROM 家計簿
46
+
47
+ ```
48
+
49
+ であり、さらにウザく書くと
50
+
51
+ ```SQL
52
+
53
+ SELECT 家計簿.日付 AS 日付, 家計簿.費目 AS 費目,
54
+
55
+ COALESCE(家計簿.メモ,'メモはNULLです)') AS メモ,
56
+
57
+ 家計簿.入金額 AS 入金額, 家計簿.出金額 AS 出金額
58
+
59
+ FROM 家計簿
60
+
61
+ ```
62
+
63
+ です。