Oracle 函数用法之decode,DECODE函数将该数值与一系列的序偶相比较,以决定***的返回结果 。序偶序偶,就是成对出现;我们将这个Oracle函数与switch比较,我们发现他们基本相似,唯一不同的是switch将要比较的值放在case后面都加上了break中。
以下一个例子:(我直接从网上找的)
SELECTid, DECODE(flag,’Y’,'Yes’,'N’,’No’,NULL,’None’,'Yes’) FROMt_test;
当t_test的flag字段为Y时返回Yes,为N时返回No,为NULL时返回None,默认返回Yes。
看看我遇到的问题:
SELECTa.id, a.user_name, a.oper_timetime2, a.oper_type, a.description, a.oper_flag, decode(a.oper_flag,'1','成功','失败')oper_flag, a.ip, b.true_name FROMSEC_LOG_OPERATIONa leftjoinsec_userbona.user_name=b.user_name where11=1 orderbyoper_timedesc
原来这红线部分是: decode(a.oper_flag, 1, ‘成功’, ‘失败’)
我在查询的时候会报错,原因是oper_flag这个字段数据中有非数字类型,也就是这个字段不仅有1、0,还有“失败”,这样数据!=字符。所以我们把1当字符处理就可以了。
相关文章
标签:Oracle