注册

case when与to_number同时使用会存在兼容性问题,请修复。

悟道 2024/10/16 511 2 已解决

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM Database Server V8 03134284194-20240703-234060-20108 Msg Version:12
【操作系统】:Windows、linux均有问题
【CPU】:x86_64
【问题描述】*:case when按照实际分支处理,导致to_number时报非法的参数数据,尝试调整参数:CASE_COMPATIBLE_MODE、CASE_WHEN_CVT_IFUN参数均无效,测试代码如下:
create table tbtest(index_item varchar2(10), index_value varchar(30));

insert into tbtest values('10000','1.0890'),('20000','2024-08-10'),('3000','-0.0987809');

select sum(case when index_item = '10000' then to_number(index_value) else 0.00 end ) ,
sum(case when index_item = '3000' then to_number(index_value) else 0.00 end ) ,
max(case when index_item = '20000' then (index_value) else '0' end )
from tbtest;

报错的截图:
image.png

使用子查询包一层是不报错的,具体如下:
select sum(to_number(value_10000) ) ,
sum( to_number(value_3000) ) ,
max(value_20000 )
from ( select (case when index_item = '10000' then (index_value) else 0.00 end ) value_10000 ,
(case when index_item = '3000' then (index_value) else 0.00 end ) value_3000,
(case when index_item = '20000' then (index_value) else '0' end ) value_20000
from tbtest ) a
image.png

回答 0
暂无回答
扫一扫
联系客服