日期:2014-05-17  浏览次数:20673 次

【查询语句】求这句话该怎么写
一个表包含两个字段,第一个是开始时间start,第二个是月数month。查询结果显示结束时间也就是开始加月数。
select add_months(start,month) from table

问题是月数有的值是null,想先转换再相加,所有的null转成0.
select add_months(start,(convert(int,nvl(month,'0')))) from table

但结果还是显示的null


求助!!!!

------解决方案--------------------
select  add_months(start,decode(month,null,0,month)) from table
------解决方案--------------------
nvl(month,0)不就可以了,或者用你的select add_months(start,to_number(nvl(month,'0'))) from table
 
------解决方案--------------------
不用那么麻烦,你写的类型转换有问题吧?
如下就可以

with tab as (
select '2012-01-01' yearF, null monthS from dual
union all
select '2012-01-01' yearF, '2' monthS from dual

)
select add_months(yearF, nvl(monthS, '0')) from tab

--结果
-------------------------------------------------------
1 2012/01/01
2 2012/03/01