在 SQL 中将十进制数据转换为自定义格式
Convert decimal data to custom format in SQL
我在 SQL 服务器中有数据,数据类型为 decimal(19, 6)
。
尝试将其转换为自定义格式时我失败了。
例如;
- 未格式化数据:
1050.850000
- 我想把它转换成
1.050,00
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 函数。
我在 SQL 服务器中有数据,数据类型为 decimal(19, 6)
。
尝试将其转换为自定义格式时我失败了。
例如;
- 未格式化数据:
1050.850000
- 我想把它转换成
1.050,00
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 函数。