使用Oracle的Decode函数进行多值判断

 更新时间:2013年05月04日 23:43:46   作者:  
decode函数比较表达式和搜索字,如果匹配,返回结果;如果不匹配,返回default值;如果未定义default值,则返回空值

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)

decode函数比较表达式和搜索字,如果匹配,返回结果;如果不匹配,返回default值;如果未定义default值,则返回空值。
以下是一个简单测试,用于说明Decode函数的用法:

复制代码 代码如下:

SQL> create table t as select username,default_tablespace,lock_date from dba_users;

Table created.

SQL> select * from t;

USERNAME                       DEFAULT_TABLESPACE             LOCK_DATE
------------------------------ ------------------------------ ---------
SYS                            SYSTEM
SYSTEM                         SYSTEM
OUTLN                          SYSTEM
CSMIG                          SYSTEM
SCOTT                          SYSTEM
EYGLE                          USERS
DBSNMP                         SYSTEM
WMSYS                          SYSTEM                         20-OCT-04

8 rows selected.


SQL> select username,decode(lock_date,null,"unlocked","locked") status from t;

USERNAME                       STATUS
------------------------------ --------
SYS                            unlocked
SYSTEM                         unlocked
OUTLN                          unlocked
CSMIG                          unlocked
SCOTT                          unlocked
EYGLE                          unlocked
DBSNMP                         unlocked
WMSYS                          locked

8 rows selected.

SQL> select username,decode(lock_date,null,"unlocked") status from t;

USERNAME                       STATUS
------------------------------ --------
SYS                            unlocked
SYSTEM                         unlocked
OUTLN                          unlocked
CSMIG                          unlocked
SCOTT                          unlocked
EYGLE                          unlocked
DBSNMP                         unlocked
WMSYS

8 rows selected.

相关文章

  • oracle保留两位小数解决方案

    oracle保留两位小数解决方案

    公司需要处理一些报表,需要使用百分率,保留2位小数,只用round和trunc函数都可以实现(round(_data,2) ),只是格式不是很工整,对格式要求不严谨的情况下使用round即可
    2012-11-11
  • Oracle中分割字符串的方法实例代码

    Oracle中分割字符串的方法实例代码

    最近遇到一个问题,需要把一个带有,的字符串拆分成多行,下面这篇文章主要给大家介绍了关于Oracle中分割字符串的方法,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • 常用Oracle分析函数大全

    常用Oracle分析函数大全

    本文是小编日常手机整理的有关oracle分析函数,oracle分析函数功能非常强大,工作也常用到,所以大家务必要掌握,对oracle分析函数知识感兴趣的朋友一起看看吧
    2016-08-08
  • Oracle system/用户被锁定的解决方法

    Oracle system/用户被锁定的解决方法

    很多人对oracle数据库会将用户锁定感觉莫名其妙,所以下面这篇文章主要介绍了Oracle system/用户被锁定的解决方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • oracle11gR2使用exp导出命令时报EXP-00011错误的解决方法

    oracle11gR2使用exp导出命令时报EXP-00011错误的解决方法

    这篇文章主要介绍了oracle11gR2使用exp导出命令时报EXP-00011错误的解决方法,大家参考使用吧
    2014-01-01
  • oracle适配器连接不上的解决办法

    oracle适配器连接不上的解决办法

    racle 的Developer连接不上报错:listener does not currently know of SID given in connect descriptor,如何解决呢?下面小编给大家分享oracle适配器连接不上的解决办法,需要的朋友可以参考下
    2015-10-10
  • oracle(plsql)生成流水号

    oracle(plsql)生成流水号

    这篇文章主要介绍了oracle(plsql)生成流水号,需要的朋友可以参考下
    2014-03-03
  • 解决Oracle RMAN删除归档日志不释放问题的方法

    解决Oracle RMAN删除归档日志不释放问题的方法

    RMAN清除方式会自动清除磁盘上的归档日志文件,同时会释放控制文件中对应的归档日志的归档信息,但最近在使用中就遇到了一个问题,下面这篇文章主要给大家介绍了关于解决Oracle RMAN删除归档日志不释放问题的方法,需要的朋友可以参考下。
    2017-07-07
  • oracle实现动态查询前一天早八点到当天早八点的数据功能示例

    oracle实现动态查询前一天早八点到当天早八点的数据功能示例

    这篇文章主要介绍了oracle实现动态查询前一天早八点到当天早八点的数据功能,涉及Oracle针对日期时间的运算与查询相关操作技巧,需要的朋友可以参考下
    2019-10-10
  • Oracle CPU高的问题及分析

    Oracle CPU高的问题及分析

    这篇文章主要介绍了Oracle CPU高的问题及分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12

最新评论