2016-06-06 16 views
0

Meine Datenbank enthält Kraftstoffeinheit Preise, die in der Regel mit einem Bruchteil Penny-Wert, wie $ 2.099 pro Gallone enden. Ich verwende den integrierten Aufruf FORMAT, um das Gebietsschema anzugeben. Dies erlaubt mir keine Währungsformatierung mit mehr als 2 Dezimalstellen. Gibt es eine Möglichkeit, dies zu überschreiben? Oder stehe ich fest, einige benutzerdefinierte Formatierung basierend auf vielen vielen möglichen Gebietsschemata zu tun?Geben Sie die Dezimalstellen für Währung in FORMAT Anruf

Betrachten Sie dieses Beispiel:

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

die Ausgänge:

NoDollarSign WrongDecimalPlaces WhatIWant 
2.099   $2.10    $2.099 

Antwort

0

Die Standard Numeric Format Strings ermöglichen es Ihnen, eine Genauigkeit anzugeben. Verwenden Sie C3 als Format statt:

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

Jede Chance, dass Sie dies nur tun können, wenn der einzige Grund, warum Sie tun dies für die Anzeige ist?

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

In meinem eigentlichen Code, ist das Gebietsschema nicht immer 'en-US' so hart Codierung eines' $ 'ist keine Option. Es müsste das Währungssymbol des Gebietsschemas reflektieren, das manchmal nach dem Dezimalwert angezeigt wird. – djs