【问题标题】:Change numeric column to money将数字列更改为货币
【发布时间】:2026-02-15 01:20:06
【问题描述】:

我的金额列中有这样的值

323547.23700
12345643.34222

我想把它转换成这种格式

$323,547.24
$12,345,643.34

我正在使用这个

CHAR(36)+CONVERT(VARCHAR,@Amount,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)

【问题讨论】:

  • 我认为这可能会对您有所帮助:*.com/questions/532351/…
  • @ntziolis 在第一种情况下 $323547
  • msdn
  • @ADC 他试图保留他所有的小数位,钱不能做到,最多有 4 个小数

标签: sql-server currency


【解决方案1】:

正如 Ademar 指出的那样,您缺少 varchar 列的显式长度,这可以解决问题:

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

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

【讨论】:

    【解决方案2】:

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

    DECLARE @amount numeric(30,5) SET @amount = 323547.23700 声明@amount1 数字(30,5) SET @amount1 =12345643.34222

    select CHAR(36)+CONVERT(varchar(20),CAST(@amount as money),1) select CHAR(36)+CONVERT(varchar(20),CAST(@amount1 as money),1)

    【讨论】: