在FORMAT调用中指定货币的小数位数

时间:2016-06-06 19:23:27

标签: sql-server globalization

我的数据库包含燃料单价,通常以小数便士价值结束,例如每加仑2.099美元。我使用内置的FORMAT调用来指定语言环境。这不允许我使用超过2位小数的货币格式。有没有办法覆盖这个?或者我是否因为许多可能的语言环境而无法进行一些自定义格式化?

考虑这个例子:

DECLARE @fuelPrice FLOAT = 2.099
SELECT FORMAT(@fuelPrice, 'G', 'en-US') AS 'NoDollarSign'
      ,FORMAT(@fuelPrice, 'C', 'en-US') AS 'WrongDecimalPlaces'
      ,'$2.099' as 'WhatIWant'

输出:

NoDollarSign    WrongDecimalPlaces  WhatIWant
2.099           $2.10               $2.099

2 个答案:

答案 0 :(得分:0)

如果您执行此操作的唯一原因是出于显示目的,您是否有机会这样做?

DECLARE @fuelPrice FLOAT = 2.099
SELECT '$' + cast(@fuelprice as varchar(10))

答案 1 :(得分:0)

Standard Numeric Format Strings允许您指定精度。请改用C3作为格式:

DECLARE @fuelPrice FLOAT = 2.099
SELECT FORMAT(@fuelPrice, 'C3', 'en-US')