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

Posted

技术标签:

【中文标题】在存储过程中将数字转换为压缩十进制【英文标题】:Converting a numeric to packed-decimal in Stored Procedure 【发布时间】:2016-12-13 20:22:19 【问题描述】:

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

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

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

我正在使用 DB2 V11

如果有其他方法请告诉我..

谢谢..

【问题讨论】:

您能指出您使用的是哪个 DBMS 吗? 使用IBM DB2 V11 请添加标签或将其添加到您的问题中。 完成.. 已添加到问题中 您遇到的错误是什么? 【参考方案1】:
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

【讨论】:

以上是关于在存储过程中将数字转换为压缩十进制的主要内容,如果未能解决你的问题,请参考以下文章