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

时间:2015-01-16 08:02:08

标签: sql sql-server formatting

我在SQL Server中拥有数据类型为decimal(19, 6)的数据。

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

例如;

  • 未格式化的数据:1050.850000
  • 我想将其转换为1.050,00

如何在T-SQL中写这个?

1 个答案:

答案 0 :(得分:1)

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

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

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

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

相同

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

select FORMAT(@data,'#,###\.\0\0')

或在格式化之前截断值

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

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

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

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

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