Oracle 函数用法之decode解剖


  本文标签:Oracle 函数

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

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

  

  1. SELECT id,  
  2. DECODE(flag,’Y’,Yes’,N’,’No’,NULL,’None’,Yes’)  
  3. FROM t_test;  

  

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

  看看我遇到的问题:

  

  1. SELECT a.id,  
  2. a.user_name,  
  3. a.oper_time time2,  
  4. a.oper_type,  
  5. a.description,  
  6. a.oper_flag,  
  7. decode(a.oper_flag, 1, 成功, 失败) oper_flag,  
  8. a.ip,  
  9. b.true_name  
  10. FROM SEC_LOG_OPERATION a  
  11. left join sec_user b on a.user_name = b.user_name  
  12. where 11 = 1  
  13. order by oper_time desc  

  

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

  我在查询的时候会报错,原因是oper_flag这个字段数据中有非数字类型,也就是这个字段不仅有1、0,还有“失败”,这样数据!=字符  。所以我们把1当字符处理就可以了  。以上的相关内容就是对Oracle 函数用法之decode的介绍,望你能有所收获  。