oracle中的flag,Oracle 函数用法之decode

Oracle数据库:

DECODE函数将该数值与一系列的序偶相比较,以决定最后的返回结果 。序偶序偶,就是成对出现;我们将这个函数与switch比较,我们发现他们基本相似,唯一不同的是switch将要比较的值放在case后面都加上了break中。

以下一个例子:(我直接从网上找的)

SELECT id,

DECODE(flag,’Y’,'Yes’,'N’,’No’,NULL,’None’,'Yes’)

FROM t_test;

当t_test的flag字段为Y时返回Yes,为N时返回No,为NULL时返回None,默认返回Yes。

看看我遇到的问题:

SELECT a.id,

a.user_name,

a.oper_time time2,

a.oper_type,

a.description,

a.oper_flag,

decode(a.oper_flag, '1', '成功', '失败') oper_flag,

a.ip,

b.true_name

FROM SEC_LOG_OPERATION a

left join sec_user b on a.user_name = b.user_name

where 1 = 1

order by oper_time desc

原来这红线部分是: decode(a.oper_flag, 1, '成功', '失败')

我在查询的时候会报错,原因是oper_flag这个字段数据中有非数字类型,也就是这个字段不仅有1、0,还有“失败”,这样数据!=字符。所以我们把1当字符处理就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值