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

Specify decimal places for currency in FORMAT call

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

考虑这个例子:

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

输出:

NoDollarSign    WrongDecimalPlaces  WhatIWant
2.099           .10               .099

如果您这样做的唯一原因是为了展示目的,您是否可以这样做?

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

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

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