oracle数据库选择判断语句怎么写,数据库-Oracle条件判断语句

经常有这种需求,如当数据库里的状态为20100时,中文希望显示为办理成功,这个时候就需要条件判断了

Oracle中条件判断有三种,如下将分别介绍

一、case ... when ... then ... else ... end【相当于大于小于等于不等于判断】

语法介绍

SELECT CASE

WHEN T.A = 1 THEN

'成功'

WHEN T.A = 2 THEN

'失败'

ELSE

'其他'

END test_clo

FROM TABLE T

-- 注:

A为表T中的列名,后面的意思是当A的值为1时翻译为'成功',当2时,翻译为'失败',不是这两种就翻译为'其他'

test_clo 为上面A的值翻译的值的列名

示例

# 需求:按对应状态分组获取对应的总数,且状态显示对应的中文

SELECT T.ORDER_STATUS 订单状态编码,

COUNT(1) 分类总数,

CASE

WHEN T.ORDER_STATUS = '20100' THEN

'办理中'

WHEN T.ORDER_STATUS = '20101' THEN

'办理成功'

WHEN T.ORDER_STATUS = '20102' THEN

'办理失败'

ELSE

'其他'

END 订单状态

FROM BASE_ORDER T

WHERE T.ORDER_CREATETIME >=

TO_TIMESTAMP('2020-02-14 14:30:00', 'yyyy-mm-dd hh24:mi:ss')

GROUP BY ORDER_STATUS

二、decode(columnname,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)函数【只能相当于等于判断】

decode() 函数的语法:

Select decode(columnname,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)

From talbename

Where …

-- 注:

其中:columnname为要选择的table中所定义的column;

缺省值可以是你要选择的column name本身,也可以是你想定义的其他值,比如Other等;

主要作用:相当于IF语句, 将查询结果翻译成其他值。(即以其他形式表现出来)。

举例说明:

现定义一table名为output,其中定义两个column分别为monthid(var型)和sale(number型),若sale值=1000时翻译为D,=2000时翻译为C,=3000时翻译为B,=4000时翻译为A,如是其他值则翻译为Other

SELECT MONTHID,

DECODE(SALE, 1000, 'D', 2000, 'C', 3000, 'B', 4000, 'A', ’OTHER’) TEST_SALE

FROM OUTPUT

若只与一个值进行比较:

SELECT MONTHID, DECODE(SALE, NULL, '---' ,SALE) TEST_SALE FROM OUTPUT

decode中可使用其他函数,如nvl()函数或sign()函数等:

NVL(EXPR1,EXPR2)

若EXPR1是NULL,则返回EXPR2,否则返回EXPR1。

SELECT NAME,NVL(TO_CHAR(COMM),'NOT APPLICATION') FROM TABLE1

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

用如下的SQL语句取较小值:

SELECT MONTHID, DECODE(SIGN(SALE - 6000), -1, SALE, 6000) FROM OUTPUT;

示例2

SELECT DECODE(T.ORDER_STATUS,

'20100',

'办理中',

'20101',

'办理成功',

'20102',

'办理失败',

ORDER_STATUS) 订单状态,

COUNT(T.ORDER_STATUS)

FROM BASE_ORDER T

GROUP BY ORDER_STATUS

三、if … then … end if 【大于小于等于不等于判断,在存储过程中使用】

语法

if con = '1' then

'满意'

end if;

if con = '1' then

'满意'

else

'其他'

end if;

if con = '1' then

'满意'

elsif con = '2' then

'一般'

else

'不满意'

end if;

原文:https://www.cnblogs.com/sunxiuwen/p/12309607.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值