我在SQL Server中拥有数据类型为decimal(19, 6)
的数据。
尝试转换为自定义格式时,我失败了。
例如;
1050.850000
1.050,00
如何在T-SQL中写这个?
答案 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函数。