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

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

【讨论】:

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

如何在存储过程中将数字转换为字符串[关闭]

在 SQL Server 存储过程中将 varchar 转换为 int 时出错

VBScript - 在 SQL Server 中将 SHA1 存储为数字或二进制值

68如何变为二进制数字 过程

IT十八掌作业_java基础第二天_进制转换原理和补码存储方式

将 varchar 转换为数字数据类型时出现算术溢出错误。找不到存储过程''。?