oracle - decode函数使用方法

来源:趣味经验馆 1.08W
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张
热门标签