在存储过程中将数字转换为压缩十进制
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 存储为数字或二进制值