为了账号安全,请及时绑定邮箱和手机立即绑定

问一下数据库这段代码的错误

问一下数据库这段代码的错误

漫之旅 2017-11-10 16:48:26
所有的日期字段都为字符串报错为expected char got number从报错分析来看是类型不一样,也就是*100不是数字值,但是第二段代码却过了,这就很不理解了,如果真的类型不一样第二段*100也会报错才对下面的这两处为什么会有冲突select case   when sysdate < to_date(cih.begin_year || '-' || cih.begin_month || '-01', 'yyyy-MM-dd')   then '0.0'   when cih2.time2<sysdate  then '100'  when         cih2.time2-to_date(cih.begin_year || '-' || cih.begin_month || '-01', 'yyyy-MM-dd')=0  then '0.0'    --这里  else (((to_date(cih.begin_year || '-' || cih.begin_month || '-01', 'yyyy-MM-dd')-sysdate)+1)/(cih2.time2-to_date(cih.begin_year || '-' || cih.begin_month || '-01', 'yyyy-MM-dd'))*100)    --这里,报错的地方这个100下面有下划线end 项目总体进度  from cbm_item_headers cih,(select a.*,(case         when To_number(a.end_month, '99') < 12         then to_date(a.end_year || '-' || to_char(cih2.end_month2,'99') || '-01', 'yyyy-MM-dd')         else to_date(to_char(cih2.end_year2,'9999') || '-' || '01' || '-01', 'yyyy-MM-dd') end) time2from cbm_item_headers a,(select item_code,to_number(end_year, '9999') + 1 end_year2,to_number(end_month, '99')+1 end_month2 from cbm_item_headers) cih2 where a.item_code=cih2.item_code) cih2where cih.item_code=cih2.item_code我去掉这两处其中一处就可以运行select(((to_date(cih.begin_year || '-' || cih.begin_month || '-01', 'yyyy-MM-dd')-sysdate)+1)/(cih2.time2-to_date(cih.begin_year || '-' || cih.begin_month || '-01', 'yyyy-MM-dd'))*100)    --去掉了case就可以运行from cbm_item_headers cih,(select a.*,(case         when To_number(a.end_month, '99') < 12         then to_date(a.end_year || '-' || to_char(cih2.end_month2,'99') || '-01', 'yyyy-MM-dd')         else to_date(to_char(cih2.end_year2,'9999') || '-' || '01' || '-01', 'yyyy-MM-dd') end) time2from cbm_item_headers a,(select item_code,to_number(end_year, '9999') + 1 end_year2,to_number(end_month, '99')+1 end_month2 from cbm_item_headers) cih2 where a.item_code=cih2.item_code) cih2where cih.item_code=cih2.item_code----------------------------------------------------------select case   when sysdate < to_date(cih.begin_year || '-' || cih.begin_month || '-01', 'yyyy-MM-dd')   then '0.0'   when cih2.time2<sysdate  then '100'  when         cih2.time2-to_date(cih.begin_year || '-' || cih.begin_month || '-01', 'yyyy-MM-dd')=0  then '0.0'        --去掉了else就可以运行end 项目总体进度  from cbm_item_headers cih,(select a.*,(case         when To_number(a.end_month, '99') < 12         then to_date(a.end_year || '-' || to_char(cih2.end_month2,'99') || '-01', 'yyyy-MM-dd')         else to_date(to_char(cih2.end_year2,'9999') || '-' || '01' || '-01', 'yyyy-MM-dd') end) time2from cbm_item_headers a,(select item_code,to_number(end_year, '9999') + 1 end_year2,to_number(end_month, '99')+1 end_month2 from cbm_item_headers) cih2 where a.item_code=cih2.item_code) cih2where cih.item_code=cih2.item_code
查看完整描述

1 回答

?
NULL12345

TA贡献1条经验 获得超0个赞

case when 前几个结果都是字符串,else结果是数学

查看完整回答
反对 回复 2018-06-24
  • 1 回答
  • 0 关注
  • 1049 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信