現在有這么1個需求,小區有幾個聯系人,現在停電,先通知聯系人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從左往右數,遇到第1個非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