2017-06-05 2 views
0

Ich muss eine SQL-Spalte Amount in einem Format von 15 Ganzzahlen und 3 Dezimalstellen (18 Länge) anzeigen.Hinzufügen von zusätzlichen Zero dynamisch zu Ganzzahl in fester Länge

  1. Fügen Sie zusätzliche Nullen dynamisch die Länge 18
  2. Dezimal abgeschlossen wird auch von einem für Beispiel

Null ersetzt werden (.):

2,494.60 $ wird als 000000002494060 angezeigt

Ist es möglich, es mit 0 zu erreichen?

Antwort

0
declare @amount numeric(15,3) = 2949.60 
select Right('000000000000000' + replace(cast(@amount as varchar(15)),'.','0'),15) 
+0

Können Sie bitte Ende der zweiten Zeile erneut prüfen. Ich denke, es hat ein Problem – Abdul

+0

die Halterung war in die andere Richtung :) – Jayvee

+0

Vielen Dank @Jayvee – Abdul

1

können Sie STR verwenden, um die Vorder- und Hinter Dezimalstellen zu fixieren, und REPLACE Räume und Punkte in Nullen zu ändern.

Abfrage:

SELECT Amount 
    , PaddedAmount = REPLACE(REPLACE(STR(Amount, 15, 2), '.', '0'), ' ', '0') 
FROM 
    (VALUES (12345.678), (1231312), (0.12345), (0), (123456789012.45)) AS V (Amount) 

Ausgang:

Amount    PaddedAmount 
------------------- ---------------- 
12345.67800   000000
1231312.00000  0000
0.12345    000000000000012 
0.00000    000000000000000 
123456789012.45000 123456789012045 
Verwandte Themen