在存储过程中将数字转换为压缩十进制

时间:2016-12-13 20:22:20

标签: stored-procedures db2 mainframe

我正在构建一个本机存储过程..其中一个字段是通过组合(连接)5个值来派生的。这5个值中的3个是字符字段,2个是压缩十进制。在写入表格之前,我需要将它们组合成1个字段。

我不确定如何在SP中将任何数字转换为压缩十进制数(COMP-3相当于COBOL)。

我尝试了DEC()函数,但没有给出预期的结果。

我正在使用DB2 V11

如果有其他方法,请告诉我。

谢谢..

1 个答案:

答案 0 :(得分:0)

with tmp as 
(
     select 
     case when 
     case when trim(ifnull(valchar1, ''))='' then '0' else trim(valchar1) end  ||
     case when trim(ifnull(valchar2, ''))='' then '0' else trim(valchar2) end  ||
     case when trim(ifnull(valchar3, ''))='' then '0' else trim(valchar3) end  ||
     valdec1 || valdec2 as NewVal
     from your table
)
select 
cast(case NewVal ='' then null else NewVal end as dec(15, 2))  as NewvvalDec 
from tmp