• DECODE异常: ORA01722: invalid number


      最近调试SQL语句,总是出现 ORA-01722: invalid number 错误,查了半天才发现是decode报错,仔细研究下Oracle官网上的资料,发现了以前没有注意过的细节,就此总结下。

      Oracle 官网Decode资料网址:http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions040.htm#i1017437

      DECODE语法,从DECODE(expr,if1,val1,if2,val2,...,ifn,valn,default),expr,ifn, default 可以为numeric 类型(NUMBER, BINARY_FLOAT, or BINARY_DOUBLE)或者character类型。

      注意事项1: expr与if1,if2...ifn 的数据类型要一致,如果不一致,Oracl会自动转换expr,if2...ifn为if1的类型,如果转换不成功就会报错。

    例如:

    SELECT DECODE('A',1,0,1) FROM DUAL;

    执行结果:

    注意事项2:  val2...valn和default应该与val1的类型一致,如果不一致,Oracle会自动转换val2...valn和default为val1类型,如果转换不成功就会报错。

    SELECT DECODE('1','0',0,'X') FROM DUAL;

    执行结果:

    注意事项3:  对于DECODE函数,Oracle认为NULL与NULL是相等的。

    SELECT DECODE(NULL,NULL,'SAME','NOT SAME') FROM DUAL;

    执行结果:

     

  • 相关阅读:
    0802作业1替换文本文件内容

    看病
    爬山
    作业1
    超市(未完成)
    图片复制
    替换
    文件
    英文字母和中文汉字在不同字符集编码下的字节数
  • 原文地址:https://www.cnblogs.com/summerlife/p/decode_Details.html
Copyright © 2020-2023  润新知