将数字列更改为money

时间:2012-03-13 10:09:25

标签: sql-server currency

我的金额列

中有这样的值
323547.23700
12345643.34222

我想以这种格式转换

$323,547.24
$12,345,643.34

我正在使用此

  

CHAR(36)+ CONVERT(VARCHAR,@金额,1)

但这并没有给我我想要的东西

这可能会暗示我正在做什么

DECLARE @amount numeric(30,5)
SET @amount = 323547.23700
DECLARE @amount1 numeric(30,5)
SET @amount1 =12345643.34222

SELECT [USD Amount]= CHAR(36)+CONVERT(VARCHAR,@amount,1)

2 个答案:

答案 0 :(得分:1)

正如Ademar指出的那样,你错过了varchar列的显式长度,这就是诀窍:

SELECT [USD Amount]= CHAR(36)+CONVERT(VARCHAR(30),@amount,1)

最后1应该为您提供所需的小数点及其值。

答案 1 :(得分:1)

我们可以先将@amount转换为货币数据类型。然后转换为varchar bt,将样式指定为1。

DECLARE @amount numeric(30,5) SET @amount = 323547.23700 DECLARE @ amount1 numeric(30,5) SET @ amount1 = 12345643.34222

选择CHAR(36)+ CONVERT(varchar(20),CAST(@amount as money),1) 选择CHAR(36)+ CONVERT(varchar(20),CAST(@ amount1作为钱),1)