Oracle中coalesce函式的用法
阿新 • • 發佈:2019-01-05
學習了幾天教主的書,今天看到coalesce函式,功能很強大啊!
檢視檢視結果:
結果竟是:
結果竟然:
coalesce函式的引數是列,結果是取出第一個不為空的列的資料。
首先,建一個檢視:
- CREATEORREPLACEVIEW v ASSELECTNULLAS c1,NULLAS c2,1 AS c3,NULLAS c4,2 AS c5,NULLAS c6 FROM dual UNIONALLSELECTNULLAS c1,NULLAS c2,NULLAS c3,3 AS c4,NULLAS c5,2 AS c6 FROM dual;
檢視檢視結果:
使用coalesce函式查結果:
-
SELECTCOALESCE
結果竟是:
難道coalesce函式不支援number型別?帶著這個疑問,給轉換一下,結果:
- SELECTCOALESCE (c1,c2,to_char(c3),to_char(c4),to_char(c5),to_char(c6)) AS c FROM v;
好像是真的,那麼對date型別的支援呢?試一試
- CREATEORREPLACEVIEW v AS
-
SELECT to_date('20150101','YYYYMMDD') AS c1,NULLAS c2,1 AS c3,NULLAS c4,2
- UNIONALL
- SELECTNULLAS c1,NULLAS c2,NULLAS c3,3 AS c4,NULLAS c5,2 AS c6 FROM dual;
結果竟然:
到這裡就不禁要想,應該不是不支援某種資料型別,而是把第一列的資料型別,作為整個函式的資料型別了。
這樣試試就行了
最後,既然coalesce函式裡面是列,那麼用*代表所有列行不行呢?
顯然是不行的。
總結:
1、coalesce函式是用來獲取第一個不為空的列的值
2、coalesce函式裡面的資料型別,必須全部都跟第一列的資料型別一致
3、CREATE OR REPLACE VIEW v AS SELECT NULL AS c FROM dual;這樣建立的檢視,列c的資料型別是char。