Oracle中coalesce函數的用法

學習了幾天教主的書,今天看到coalesce函數,功能很強大啊!

coalesce函數的參數是列,結果是取出第一個不爲空的列的數據。

首先,建一個視圖:

  1. CREATE OR REPLACE VIEW v AS SELECT NULL AS c1,NULL AS c2,1 AS c3,NULL AS c4,2 AS c5,NULL AS c6 FROM dual UNION ALL SELECT NULL AS c1,NULL AS c2,NULL AS c3,3 AS c4,NULL AS c5,2 AS c6 FROM dual;  

查看視圖結果:


使用coalesce函數查結果:

  1. SELECT COALESCE (c1,c2,c3,c4,c5,c6) AS c FROM v;  

結果竟是:


難道coalesce函數不支持number類型?帶着這個疑問,給轉換一下,結果:

  1. SELECT COALESCE (c1,c2,to_char(c3),to_char(c4),to_char(c5),to_char(c6)) AS c FROM v;  


好像是真的,那麼對date類型的支持呢?試一試

  1. CREATE OR REPLACE VIEW v AS  
  2. SELECT to_date('20150101','YYYYMMDD'AS c1,NULL AS c2,1 AS c3,NULL AS c4,2 AS c5,NULL AS c6 FROM dual  
  3. UNION ALL  
  4. SELECT NULL AS c1,NULL AS c2,NULL AS c3,3 AS c4,NULL AS 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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章