Oracle 判断语句

首先是decode函数。

decode的用法是
DECODE(control_value,value1,result1[,value2,result2…][,default_result]);
参数说明:
control _value
试图处理的数值。可以是数据库中表的某一列,DECODE函数将该数值与后面的一系列的偶序相比较,以决定返回值。

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

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

default_result
未能与任何一个值匹配时,函数返回的默认值。
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


另外一种方法就是CASE WHEN THEN END
本人比较喜欢这种,因为有时候判断的内容比较长,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


还有一种CASE WHEN用法
CASE sex  
WHEN '1' THEN '男'  
WHEN '2' THEN '女'  
ELSE '其他' END


另外,在WHERE语句里面使用CASE WHEN:
SELECT T2.*, T1.*   
FROM T1, T2  
WHERE (CASE WHEN T2.COMPARE_TYPE = 'A' 
             AND T1.SOME_TYPE LIKE 'NOTHING%'
            THEN 1
            WHEN T2.COMPARE_TYPE != 'A' 
             AND T1.SOME_TYPE NOT LIKE 'NOTHING%'
            THEN 1 
            ELSE 0 END) = 1



在存储过程中使用的最多的是IF判断语句。
在Oracle中,IF语句分为三种形式:
IF A>B
THEN B=A ;
END IF;

IF A>B
THEN B=A;
ELSE A=B;
END IF;

IF A>B
THEN B=1 ;
ELSIF A=B ;
THEN B= 0;
ELSE 
  A= 1;
END IF;


要注意的是。
还可以加上begin....end,本情况只适用于if 嵌套情况,如
if .... then
begin
elsif ... then
end if;








转载于:https://my.oschina.net/dacoolbaby/blog/353007

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值