case資料庫
㈠ case宸ュ叿鐨凜ASE寮鍙戠幆澧
CASE浣滀負涓涓閫氱敤鐨勮蔣浠舵敮鎸佺幆澧冿紝瀹冨簲鑳芥敮鎸佹墍鏈夌殑杞浠跺紑鍙戣繃紼嬬殑鍏ㄩ儴鎶鏈宸ヤ綔鍙婂叾綆$悊宸ヤ綔銆侰ASE鐨勯泦鎴愯蔣浠跺伐鍏瘋兘澶熶負緋葷粺寮鍙戣繃紼嬫彁渚涘叏闈㈢殑鏀鎸侊紝鍏朵綔鐢ㄥ寘鎷錛氱敓鎴愮敤鍥懼艦琛ㄧず鐨勭郴緇熼渶奼傚拰璁捐¤勬牸璇存槑錛涙鏌ャ佸垎鏋愮浉浜ゅ弶寮曠敤鐨勭郴緇熶俊鎮錛涘瓨鍌ㄣ佺$悊騫舵姤鍛婄郴緇熶俊鎮鍜岄」鐩綆$悊淇℃伅錛涘緩絝嬬郴緇熺殑鍘熷瀷騫舵ā鎷熺郴緇熺殑宸ヤ綔鍘熺悊錛涚敓鎴愮郴緇熺殑浠g爜鍙婃湁鍏崇殑鏂囨。錛涘疄鏂芥爣鍑嗗寲鍜岃勬牸鍖栵紱瀵圭▼搴忚繘琛屾祴璇曘侀獙璇佸拰鍒嗘瀽錛涜繛鎺ュ栭儴璇嶅吀鍜屾暟鎹搴撱
涓轟簡鎻愪緵鍏ㄩ潰鐨勮蔣浠跺紑鍙戞敮鎸侊紝涓涓瀹屾暣鐨凜ASE鐜澧冨叿鏈夌殑鍔熻兘鏈夛細鍥懼艦鍔熻兘銆佹煡閿欏姛鑳姐佷腑蹇冧俊鎮搴撱侀珮搴﹂泦鎴愬寲鐨勫伐鍏峰寘銆佸硅蔣浠跺紑鍙戠敓鍛藉懆鏈熺殑鍏ㄩ潰瑕嗙洊銆佹敮鎸佸緩絝嬬郴緇熺殑鍘熷瀷銆佷唬鐮佺殑鑷鍔ㄧ敓鎴愩佹敮鎸佺粨鏋勫寲鐨勬柟娉曡恆
涓涓瀹屽杽鐨凜ASE鐜澧冨繀欏誨叿鏈変笅鍒楃壒寰侊細
錛1錛夎兘鐢熸垚緇撴瀯鍖栧浘鐨勫浘褰㈡帴鍙c
錛2錛夎兘瀛樺偍鍜岀$悊鎵鏈夎蔣浠剁郴緇熶俊鎮鐨勪腑蹇冧俊鎮搴撱
錛3錛夊叡浜涓涓鍏鍏辯敤鎴鋒帴鍙g殑楂樺害闆嗘垚鍖栫殑杞浠跺伐鍏峰寘銆
錛4錛夊叿鏈夎緟鍔╂瘡涓闃舵電殑宸ュ叿銆
錛5錛夊叿鏈夌敱璁捐¤勬牸璇存槑鑷鍔ㄧ敓鎴愪唬鐮佺殑宸ュ叿銆
錛6錛夊湪宸ュ叿涓瀹炵幇鑳借繘琛屽悇綾繪鏌ョ殑杞浠剁敓鍛藉懆鏈熸柟娉曡恆
SQL語句中的CASE語句與高級語言中的switch語句,是標准SQL的語法,適用與一個條件判斷有多種值的情況下分別執行不同的操作
靈活應用CASE語句可以使SQL語句變得簡潔易讀.
Case 使用方法:
Case具有兩種格式。簡單Case函數
和Case搜索函數。 --簡單Case
函數
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
--Case搜索函數
CASE WHEN sex = '1' THEN '男'
WHEN sex = '2' THEN '女'
ELSE '其他' END
這兩種方式,可以實現相同的功能。簡單Case函數的寫法相對比較簡潔,但是和Case搜索函數相比,功能方面會有些限制,比如寫判斷式。
還有一個需要注意的問題,Case函數只返回第一個符合條件的值,剩下的Case部分將會被自動忽略。
--比如說,下面這段SQL,你永遠無法得到「第二類」這個結果
CASE WHEN col_1 IN ( 'a', 'b') THEN '第一類'
WHEN col_1 IN ('a') THEN '第二類'
ELSE'其他' END
㈢ oracle鏁版嵁搴揷ase闂棰
case when...then...else...end鏄痵ql鏌ヨ㈢殑榪囨護鏉′歡錛屽湪鍋氱粺璁$殑鏃跺欏父甯鎬嬌鐢ㄣ
琛╫rder錛坕d, status錛
select count(*) 璁㈠崟鏁幫紝sum(case when a.status='1' then 1 else 0 end) 寰呬粯嬈撅紝sum(case when a.status='2' then 1 else 0 end) 寰呭彂璐э紝sum(case when a.status='3' then 1 else 0 end) 寰呮敹璐э紝sum(case when a.status='4' then 1 else 0 end) 宸插畬鎴愶紝sum(case when a.status='5' then 1 else 0 end) 宸插彇娑 fromorder
Oracle Database錛屽張鍚峅racle RDBMS錛屾垨綆縐癘racle銆傛槸鐢查ㄦ枃鍏鍙哥殑涓嬈懼叧緋繪暟鎹搴撶$悊緋葷粺銆傚畠鏄鍦ㄦ暟鎹搴撻嗗煙涓鐩村勪簬棰嗗厛鍦頒綅鐨勪駭鍝併傚彲浠ヨ碠racle鏁版嵁搴撶郴緇熸槸鐩鍓嶄笘鐣屼笂嫻佽岀殑鍏崇郴鏁版嵁搴撶$悊緋葷粺錛岀郴緇熷彲縐繪嶆уソ銆佷嬌鐢ㄦ柟渚褲佸姛鑳藉己錛岄傜敤浜庡悇綾誨ぇ銆佷腑銆佸皬銆佸井鏈虹幆澧冦傚畠鏄涓縐嶉珮鏁堢巼銆佸彲闈犳уソ鐨 閫傚簲楂樺悶鍚愰噺鐨勬暟鎹搴撹В鍐蟲柟妗堛