巧用coalesce,coalesce
現在有這麼一個需求,小區有幾個連絡人,現在停電,先通知連絡人1,如果沒有則通知連絡人2,否則還沒有則通知連絡人3.
create table test(
id number,
name varchar2(20),
contact_phone1 varchar2(20),
contact_phone2 varchar2(20),
contact_phone3 varchar2(20),
contact_phone4 varchar2(20)
);
insert into test values(1,'小區1','','','13485958522','');
insert into test values(1,'小區2','','','','13488958536');
commit;
SQL> select * from test;
ID NAME CONTACT_PHONE1 CONTACT_PHONE2 CONTACT_PHONE3 CONTACT_PHONE4
----- ------- -------------- --------------- -------------- --------------
1 小區1 13485958522
1 小區2 13488958536
如果沒有這個函數,你可以要先把資料查出來以後,再用java代碼處理。coalesce從左往右數,遇到第一個非null值,則返回該非null值,多層判斷。
SQL> select id,name,coalesce(contact_phone1,
contact_phone2,
contact_phone3,
contact_phone4) as contact_phone
from test;
ID NAME CONTACT_PHONE
---------- -------------------- --------------------
1 小區1 13485958522
1 小區2 13488958536