在 SQL 中将十进制数据转换为自定义格式

Convert decimal data to custom format in SQL

我在 SQL 服务器中有数据,数据类型为 decimal(19, 6)

尝试将其转换为自定义格式时我失败了。

例如;

T-SQL怎么写?

小数、日期、整数等无格式。它们都是二进制值。仅当您要从值创建字符串或将字符串解析为值时才应用格式。

在SQL Server 2012+中,您可以使用FORMAT函数以自定义格式格式化小数,例如:

declare @data decimal(19,6)=1050.850000
select FORMAT(@data,'#,###.00')

格式字符串的语法与 .NET 的相同

您想要的输出会截断小数,但会显示 小数的值。如果这不是错字,您可以用文字替换小数,例如:

select FORMAT(@data,'#,###\.[=11=][=11=]')

或者在格式化之前截断值

declare @data decimal(19,6)=1050.850000
select FORMAT(floor(@data),'#,###.00')

在以前的 SQL 服务器版本中,您只能使用 CONVERT 函数的预定义货币类型格式:

select CONVERT(nvarchar,cast(@data as money),1)

请注意 nvarchar 默认为 nvarchar(30)。大于 30 个字符的字符串将被截断为前 30 个字符。

同样,如果要截断小数,请使用 FLOOR 函数。