日期:2014-05-17 浏览次数:22236 次
SELECT DECODE(0,NULL,'a',0) FROM DUAL
------解决方案--------------------
NVL(expr1, expr2).
expr1和expr2可以是任何类型。如果2者类型不同,Oracle会进行隐式类型转换。
如果不能进行隐式转换,将会产生一个错误。
隐式转换规则:
如果expr1是字符型,则Oracle在判断之前,将expr2转换为expr1的类型
如果expr1是数字类型,则会判断哪个参数具有最高的数字优先级,然后将另一个参数转化为该类型。
本例中,字符型的数字优先级肯定最低,所以会将后面的字符串转换为数字类型,所以出错。
------解决方案--------------------
DECODE函数应该可以完成转换
------解决方案--------------------
用DECODE 吧
------解决方案--------------------
select nvl(0,'未知')from dual
中的字符数据类型不同,所以报错!!
------解决方案--------------------
0是数值型,当然不能转
NVL(C1,'未知')
如果是将数字0转成未知就DECODE
decode(0,‘未知’)
------解决方案--------------------
--这样写 select nvl('0','未知') from dual