DECODE鍑芥暟鏄疧RACLE PL/SQL鏄姛鑳藉己澶х殑鍑芥暟涔嬩竴錛岀洰鍓嶈繕鍙湁ORACLE鍏徃鐨凷QL鎻愪緵浜?jiǎn)姝ゅ嚱鏁板Q屽叾浠栨暟鎹簱鍘傚晢鐨凷QL瀹炵幇榪樻病鏈夋鍔熻兘銆侱ECODE鏈変粈涔堢敤閫斿憿錛熷厛鏋勯犱竴涓緥瀛愶紝鍋囪鎴戜滑鎯崇粰鏅烘槦鑱屽憳鍔犲伐璧勶紝鍏舵爣鍑嗘槸錛氬伐璧勫湪8000鍏冧互涓嬬殑灝嗗姞20錛咃紱宸ヨ祫鍦?000鍏冧互涓婄殑鍔?5錛咃紝閫氬父鐨勫仛娉曟槸錛屽厛閫夊嚭璁板綍涓殑宸ヨ祫瀛楁鍊? select salary into var-salary from employee錛岀劧鍚庡鍙橀噺var-salary鐢╥f-then-else鎴朿hoose case涔嬬被鐨勬祦鎺у埗璇彞榪涜鍒ゆ柇銆傚鏋滅敤DECODE鍑芥暟錛岄偅涔堟垜浠氨鍙互鎶婅繖浜涙祦鎺у埗璇彞鐪佺暐錛岄氳繃SQL璇彞灝卞彲浠ョ洿鎺ュ畬鎴愩傚涓嬶細(xì)select decode(sign(salary - 8000),1,salary*1.15,-1,salary*1.2,salary from employee 鏄笉鏄緢綆媧侊紵 DECODE鐨勮娉曪細(xì)DECODE(value,if1,then1,if2,then2,if3,then3,...,else)錛岃〃紺哄鏋渧alue 絳変簬if1鏃訛紝DECODE鍑芥暟鐨勭粨鏋滆繑鍥瀟hen1,...,濡傛灉涓嶇瓑浜庝換浣曚竴涓猧f鍊鹼紝鍒欒繑鍥瀍lse銆傚垵鐪嬩竴涓嬶紝DECODE 鍙兘鍋氱瓑浜庢祴璇曪紝浣嗗垰鎵嶄篃鐪嬪埌浜?jiǎn)锛屾垜浠氳繃涓浜涘嚱鏁版垨璁$畻鏇夸唬value錛屾槸鍙互浣緿ECODE鍑芥暟鍏峰澶т簬銆佸皬浜庢垨絳変簬鍔熻兘銆?nbsp;
4銆佷嬌鐢╟ase璇硶
Case璇硶鏄疧racle 9i鍚庡紑濮嬫敮鎸佺殑錛屾槸涓涓瘮杈冪伒媧葷殑璇硶錛屽悓鏍峰湪鎺掑簭涓篃鍙互搴旂敤
濡傦細(xì)
select
*
from employee
order by (case employee_name
when null then
'寮犱笁'
else
employee_name
end)
琛ㄧず褰揺mployee_name涓虹┖鏃跺垯榪斿洖’寮犱笁’錛屽鏋滀笉涓虹┖鍒欒繑鍥瀍mployee_name
閫氳繃case璇硶鍚屾牱鍙互瀹氬埗null鐨勬帓搴忎綅緗?nbsp;
5銆佷嬌鐢╪ulls first鎴栬卬ulls last璇硶
Nulls first鍜宯ulls last鏄疧racle Order by鏀寔鐨勮娉?nbsp;
濡傛灉Order by 涓寚瀹氫簡(jiǎn)琛ㄨ揪寮廚ulls first鍒欒〃紺簄ull鍊肩殑璁板綍灝嗘帓鍦ㄦ渶鍓?涓嶇鏄痑sc 榪樻槸 desc)
濡傛灉Order by 涓寚瀹氫簡(jiǎn)琛ㄨ揪寮廚ulls last鍒欒〃紺簄ull鍊肩殑璁板綍灝嗘帓鍦ㄦ渶鍚?(涓嶇鏄痑sc 榪樻槸 desc)
浣跨敤璇硶濡備笅錛?nbsp;
--灝唍ulls濮嬬粓鏀懼湪鏈鍓?nbsp;
select * from zl_cbqc order by cb_ld nulls first
--灝唍ulls濮嬬粓鏀懼湪鏈鍚?nbsp;
select * from zl_cbqc order by cb_ld desc nulls last