【问题标题】:Specify decimal places for currency in FORMAT call在 FORMAT 调用中指定货币的小数位
【发布时间】:2016-06-06 19:23:27
【问题描述】:

我的数据库包含燃料单价,通常以小数便士值结尾,例如每加仑 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

【问题讨论】:

    标签: sql-server globalization


    【解决方案1】:

    如果您这样做的唯一原因是为了展示,您是否有机会这样做?

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

    【讨论】:

    • 在我的实际代码中,语言环境并不总是en-US,所以硬编码$ 不是一种选择。它需要反映区域设置的货币符号,有时显示在十进制值之后。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-20
      • 1970-01-01
      • 2011-08-29
      • 1970-01-01
      • 1970-01-01
      • 2014-03-25
      相关资源
      最近更新 更多