2022年12月27日 星期二

SQL 的 coalesce() function

最近看到有 SQL 使用這 function ,特此紀錄一下這是什麼

其實執行完以下 SQL 就很清楚了

select a, b, c, coalesce(a, b, c, 0) from (
	select 1 as a, 2 as b, 3 as c
	union all
	select 1, null, null
	union all
	select null, 2, null
	union all
	select null, null, 3
	union all
	select null, null, null
) t

輸出結果

+------+------+------+----------------------+
| a    | b    | c    | coalesce(a, b, c, 0) |
+------+------+------+----------------------+
|    1 |    2 |    3 |                    1 |
|    1 | NULL | NULL |                    1 |
| NULL |    2 | NULL |                    2 |
| NULL | NULL |    3 |                    3 |
| NULL | NULL | NULL |                    0 |
+------+------+------+----------------------+

簡單說就是第一個值有值時,取第一個值;沒有取第二個;再沒有取第三個……(下略)。

類似 ifnull(),不過ifnull()只能放兩個參數;coalesce()可以多個

沒有留言:

張貼留言