zoukankan      html  css  js  c++  java
  • Oracle判断语句集合(转载)

    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)

  • 相关阅读:
    thinkphp header模块中的CSS格式也要写在home页中,不然无效
    thinkphp header模块中设为首页的JS代码需要写在HOME页中
    dubbo框架-学习-dubbo原理
    java-面试题为什么redis这么快
    jsp学习——九大内置对象
    日志平台使用记录
    java-消息队列相关-activeMQ
    java——比较难和底层的面试题
    学习之道——感觉东西多不知道如何下手怎么办
    java-Freemarker-模板引擎学习
  • 原文地址:https://www.cnblogs.com/jjzd/p/5848090.html
Copyright © 2011-2022 走看看