数字转换成货币格式-char值语法错误

时间:2018-07-12 16:53:36

标签: sql sql-server

我一行中有> 2个数字:

Type       DollarValue 
 2          1000000; 2000000

我想将它们格式化:

Type       DollarValue 
 2          1,000,000; 2,000,000

我尝试使用转换,例如:

('$' + convert(nvarchar(29),convert(money,DollarValue),1))

但我收到以下警报:

  

无法将char值转换为金钱。 char值的语法错误。

我相信这是因为';'在数字之间?

1 个答案:

答案 0 :(得分:2)

如果使用SQL Server 2017或更高版本,则可以尝试以下方法:

使用STRING_SPLIT函数除以;,然后使用Format函数使您期望的格式。然后通过string_agg函数合并数据。

测试DDL

CREATE TABLE T(
   Type int,
   DollarValue varchar(100)
);
insert into t values (2,'1000000; 2000000;3000000');

查询

select 
    Type, string_agg(val, ';') as DollarValue 
from
    (select
         t.Type, 
         Format(Cast(value As Int), '###,000') val
     from
         T
     cross apply 
         STRING_SPLIT (t.DollarValue , ';' )) t1
group by 
   Type

[结果]

| Type |                   DollarValue |
|------|-------------------------------|
|    2 | 1,000,000;2,000,000;3,000,000 |

sqlfiddle:http://sqlfiddle.com/#!18/3a2f2/1