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当字符处理就可以了。
相关推荐
bianxq 2020-05-16
LuoXinLoves 2020-03-26
Streamoutput 2020-05-01
Streamoutput 2020-04-30
zhangxiaojiakele 2019-12-21
Nicolase 2019-12-19
us0 2019-09-05
yanghuatong 2013-05-04
不懂 2019-07-07
qiguiting 2019-07-01
CoreyJia 2015-05-29
handle0 2011-03-18
linkincsdn 2013-07-04
87497718 2012-04-18
89367267 2011-09-17
lester 2018-08-31
katnisswuyuechen 2018-12-21