我一行中有> 2个数字:
Type DollarValue
2 1000000; 2000000
我想将它们格式化:
Type DollarValue
2 1,000,000; 2,000,000
我尝试使用转换,例如:
('$' + convert(nvarchar(29),convert(money,DollarValue),1))
但我收到以下警报:
无法将char值转换为金钱。 char值的语法错误。
我相信这是因为';'在数字之间?
答案 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