IT科技

當前位置 /首頁/IT科技 > /列表

decode函數使用方法,oracle

DECODE()函數,它將輸入數值與函數中的參數列表相比較,根據輸入值返回一個對應值。函數的參數列表是由若干數值及其對應結果值組成的若干序偶形式。當然,如果未能與任何一個實參序偶匹配成功,則函數也有默認的返回值。
語法結構如下:
decode (expression, search_1, result_1)
decode (expression, search_1, result_1, search_2, result_2)
decode (expression, search_1, result_1, search_2, result_2, ...., search_n, result_n)
decode (expression, search_1, result_1, default)
decode (expression, search_1, result_1, search_2, result_2, default)
decode (expression, search_1, result_1, search_2, result_2, ...., search_n, result_n, default)
比較表達式和搜索字,如果匹配,返回結果;如果不匹配,返回default值;如果未定義default值,則返回空值。

實例使用

創建一個學生成績表。欄位有: 學生名, 科目名和分數。

oracle decode函數使用方法

插入測試數據。

oracle decode函數使用方法 第2張

測試一及結果:

oracle decode函數使用方法 第3張

如果是中文課程的話, 顯示分數, 其他課程分數為零。
這條SQL 看上去使用意義不大。

測試二:統計中文課程的分數。看上去有點意義。

oracle decode函數使用方法 第4張

總體看來, decode 的使用看上去和case when 有點類似。如果只是用作以上兩種狀況,看上去意義不大。

使用的兩句使用後的效果一樣,看上去使用decode 多此一舉。

oracle decode函數使用方法 第5張

行轉列-有意義的使用

往以上table 再插入一些其他學生的成績:

oracle decode函數使用方法 第6張

使用以下SQL:

oracle decode函數使用方法 第7張

返回:

oracle decode函數使用方法 第8張

由此看來,將行的數據轉化為列, 就很有意義了。

使用case then 也可以達到相同的效果。

oracle decode函數使用方法 第9張
TAG標籤:oracle decode 函數 #