如何在SQL Server中将列强制转换为十进制类型
本文关键字:转换 类型 十进制 SQL Server | 更新日期: 2023-09-27 18:12:07
tablesAA
有两列,amount
为decimal (28,10)
, amountscale
为int
。
我需要将amount
转换为decimal [ (p[ ,s] )]
。
's'是动态的,从amountscale
列的值,但底部的代码导致语法错误。
那么,如何根据amountscale
值进行amount
的强制转换?
select
amount, amountscale,
cast(amount as decimal(28, amountscanle)) as amount
from tablesAA
唉,对于cast()
,比例和精度需要是常量。
如果您只想要特定比例和精度的数据输出,那么您可以使用str()
(文档在这里)将它们转换为字符串:
select amount, amountscanle,
str(amount, 28, amountscanle) as amount2
from tablesAA;
另一种方法是暴力破解方法:
select amount, amountscanle,
(case when amountscanle = 0 then cast(amount as decimal(28, 0)
when amountscanle = 1 then cast(amount as decimal(28, 1)
when amountscanle = 2 then cast(amount as decimal(28, 2)
. . .
end) as amount2
from tablesAA;