SELECT decode(sign(to_date('2008-05-01', 'yyyy-MM-dd') -
                   to_date('2008-03-01', 'yyyy-MM-dd')),
              1,
              to_date('2008-05-02', 'yyyy-MM-dd'),
              to_date('2008-03-02', 'yyyy-MM-dd'))
  FROM dual

--decode只支持比较值的相等和不相等,所以用sign(正数返回1,否则0)和1比较.

decode(floor(a/b),0,a,b) 
简单的,如果a <b那么floor(a/b)=0 
用decode判断,如果=0则返回a,否则,返回b

用case...when

select case 
when 
to_date('2008-05-01','yyyy-MM-dd')>=to_date('2008-03-01','yyyy-MM-dd')
then
to_date('2008-05-01','yyyy-MM-dd')
else 
to_date('2008-03-01','yyyy-MM-dd')
end 
from dual

-----------------------------------------------------------

decode用法:

例如 select count(*) from news

我们统计NEWS中的新闻条数,如果大于1000 的话就提示大于限制了.

这样 select decode(count(*),1000,'己经超出限制',limit)

这样limit 输出的就为'己经超出限制'这个字符串.

我们还可以用这个判断大小

a=10,变量b=20

则sign(a-b)返回-1,decode解码结果为“变量1”,达到了取较小值的目的。

sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1

decode(sign(a-b),-1,a,b)

如果a<b的话,就输出A的值 
-----------------------------------------------------

decode函数说明:
decode函数可以将输入数值与函数中的参数列表相比较,根据输入值返回一个对应值。
函数的参数列表是由若干数值及其对应结果值组成的若干序偶形式。当然,如果未能与任何一个实参序偶匹配成功,则函数也有默认的返回值。区别于SQL的其它函数,DECODE函数还能识别和操作空值。

如果应用中没有建立代码表,使用docode函数进行key–>value的转换是一种不错的替代方案,只是为应用的后期维护带来麻烦。

语法如下:
DECODE(control_value,value1,result1[,value2,result2…][,default_result]);

参数说明:
control _value
试图处理的数值。可以是数据库中表的某一列,DECODE函数将该数值与后面的一系列的偶序相比较,以决定返回值。

value1
是一组成序偶的数值。如果输入数值与之匹配成功,则相应的结果将被返回。对应一个空的返回值,可以使用关键字NULL于之对应

result1
是一组成序偶的结果值。

default_result 
未能与任何一个值匹配时,函数返回的默认值。

示例:
首先创建一张sale表,并插入一些测试数据:

create table class(id char(2),name varchar2(50), valid_flag char(1));
insert into class values('01','语文','Y');
insert into class values('02','数学','Y');
insert into class values('03','外语','N');
insert into class values('04','历史');

首先看一下decode函数的基本用法:

select id, name, decode(valid_flag, 'Y', '有效', 'N', '无效','未设置') from class;

ID NAME                                               DECODE(VALID_FLAG,'Y','有效','
-- -------------------------------------------------- ------------------------------
01 语文                                               有效
02 数学                                               有效
03 外语                                               无效
04 历史                                               未设置

说明:
当valid_flag为’Y'时,则返回’有效’;
当month为’N'时,则返回’无效’;
其他则返回’未设置’。

以上的sql语句可以通过case实现:

select id, name, case valid_flag 
                 when 'Y' then '有效'
                 when 'N' then '无效'
                 else '未设置' end
from class;

由以上sql语句可以看出,使用decode函数要简洁的多。

另外,还可以在Order by中使用decode:

例:表table_subject,有subject_name列。要求按照:语、数、外的顺序进行排序。这时,就可以非常轻松的使用Decode完成要求了。

select * from table_subject order by decode(subject_name, ‘语文’, 1, ‘数学’, 2, , ‘外语’,3)

Oracle判断语句集合(转载)的更多相关文章

  1. Oracle常用语句集合

    oracle常用经典SQL查询 常用SQL查询: .查看表空间的名称及大小 )),) ts_size from dba_tablespaces t, dba_data_files d where t. ...

  2. oracle查询语句【转载】

    建立的表: 表名:REGIONS 序号 列名 数据类型 长度 小数位 标识 主键 允许空 默认值 说明 1 REGION_ID NUMBER 是 否 2 REGION_NAME VARCHAR2 25 ...

  3. oracle 经典语句集合

    1.一列转多行 方法一: select a.id,  substr(','||a.name||',',instr(','||a.name,',',1,b.rn)+1,    instr(a.name| ...

  4. 【Oracle】Oracle常用语句集合

    表相关 1.快速统计大表记录数 select table_name, t.num_rows, t.last_analyzed  from tabs t WHERE table_name='TABLE_ ...

  5. 判断语句 (a>b)?a:b【转载】

    文章转载自https://blog.csdn.net/hyj1996818/article/details/81783513 今天刷题有看到一种我没学过的判断语句 感觉很高级的样子 我跟大家分享下我的 ...

  6. Oracle 存储过程判断语句正确写法和时间查询方法

    判断语句:if 条件 then   if  条件  then ************;   elsif  条件  then  ************;   elsif 条件  then ***** ...

  7. easyui datagrid 禁止选中行 EF的增删改查(转载) C# 获取用户IP地址(转载) MVC EF 执行SQL语句(转载) 在EF中执行SQL语句(转载) EF中使用SQL语句或存储过程 .net MVC使用Session验证用户登录 PowerDesigner 参照完整性约束(转载)

    easyui datagrid 禁止选中行   没有找到可以直接禁止的属性,但是找到两个间接禁止的方式. 方式一: //onClickRow: function (rowIndex, rowData) ...

  8. (转帖)oracle sql 语句优化

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  9. Oracle 数据库语句大全

    Oracle数据库语句大全 ORACLE支持五种类型的完整性约束 NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CH ...

随机推荐

  1. <php>PDO链接方法

    <?php //定义数据源 $dsn = "mysql:dbname=mydb;host=localhost"; //$dsn = "sqlsrv:dbname=m ...

  2. PDO如何选择其他数据库的驱动

    $dsn = "mysql(用的mysql的驱动):dbname=testdb(连接数据库名称);host=127.0.0.1(IP地址,本地是:localhost)"

  3. hadoop集群监控工具ambari安装

    Apache Ambari是对Hadoop进行监控.管理和生命周期管理的基于网页的开源项目.它也是一个为Hortonworks数据平台选择管理组建的项目.Ambari支持管理的服务有: Apache ...

  4. Smack+Openfire 接收和发送文件

    转载请注明出处:http://blog.csdn.net/steelychen/article/details/37958839 发送文件须要提供准确的接收放username称(例:user2@192 ...

  5. Android开源代码解读のOnScrollListener实现ListView滚屏时不加载数据

    使用ListView过程中,如果滚动加载数据的操作比较费时,很容易在滚屏时出现屏幕卡住的现象,一个解决的办法就是不要在滚动时加载数据,而是等到滚动停止后再进行数据的加载.这同样要实现OnScrollL ...

  6. Android中Service类onStartCommand

    Android开发的过程中,每次调用startService(Intent)的时候,都会调用该Service对象的onStartCommand(Intent,int,int)方法,然后在onStart ...

  7. Linux目录结构及文件基础操作

    一.Linux目录结构 windows系统中主要以存储介质为主(磁盘). UNIX和Linux系统中主要是以目录为主(以树形目录结构的形式构建整个系统). 1. FHS(Filesystem Hier ...

  8. 查看linux版本和内核信息

    一.查看Linux内核版本命令(两种方法): 1.cat /proc/version [root@localhost ~]# cat /proc/versionLinux version 2.6.32 ...

  9. python - 面向对象(一)

    python是一门面向对象的编程语言,python中的一切均是对象. 有对象就提到类,对象和类就像是儿子和老子的关系,是不可分的一对. 什么是类     类就是具有一些共同特性的事物的统称.好比人类, ...

  10. asp.net操作xml(增删查改)

    asp.net操作xml 1.xml文档Products.xml <?xml version="1.0" encoding="utf-8"?> &l ...