类型"/>
关于decode方法返回类型
昨天同事sql出了点bug,结果给他调sql时发现 了这个问题
首先是oracle 11g中,代码示列如下:
select decode(haha,'',0,haha)|| '%' haha from (select to_char(125/10000, 'fm9999990.9999') as haha from dual);
你会得到如下执行结果
.0125%
可是我在第一步給计算结果进行了to_char()为什么小数点前面的值没有了呢?
于是执行了里面一层查询
select to_char(125/10000, 'fm9999990.9999') || '%'as haha from dual
结果确实是
0.0125
那么问题出现就出现在了外层查询,
在外层查询中进行了decode和字符串拼接(||)操作, 在执行
select to_char(125/10000, 'fm9999990.9999')||'%' as haha from dual
得到:
0.0125%
这里说明了这里的如果decode()返回是肯定不是char类型,这里的haha发生了类型转换,
可是这里haha是缺省值,是它本身,这里注意到这里如果是‘’的时候返回是0,而不是字符串此时执行
select decode(haha,'','0',haha)|| '%' haha from (select to_char(125/10000, 'fm999
更多推荐
关于decode方法返回类型
发布评论