【发布时间】:2013-09-11 19:46:50
【问题描述】:
这个查询:
select nvl(0.75,0) from dual
给我0.75(数字)但是这个查询:
select decode(1,0,null,0.75) from dual
给我'.75'(字符串)。
为什么?
我试图通过将第二个查询更改为:
select decode(1,0,null,to_char(0.75,'0.99')) from dual
但在我的实际代码中,0.75 将是一个可能有不同小数位数的字段 (NUMBER),我不打算从该值添加/删除任何内容。
关于如何解决丢失零问题但仍支持所有可能的十进制长度的任何想法?
【问题讨论】:
-
您应该尝试使用 Coalesce() 而不是 Nvl(),并使用 Case 而不是 Decode(),原因在别处解释了各种原因。
标签: java sql oracle decode to-char