Betragsformatierung in SELECT-Statements

Vielleicht stand der ein oder andere schonmal vor dem Problem, einen Betrag direkt aus einem SELECT-Statement heraus formatieren zu müssen, ohne das Ergebnis nachträglich mit einem anderen Hilfsmittel (z.B. mittels Programmcode, Reportgenerator o.ä.) zu „veredeln“.

Mir ging es jedenfalls heute so, daher folgt hier mein Lösungsweg.

Im folgenden Beispiel möchte ich sechs Vorkomma-Stellen mit führender Null sehen.
[PowerShell]1234,56 => 001234,56

Die Default-Formatierung der Rückgabe von Dezimalwerten sieht bei MySQL in etwa so aus:
[sql]
SELECT 1234.56
Ergebnis: 1234.56
[/sql]

Mein Lösungsweg setzt darauf auf, die Rückgabe als String zu formatieren. Hierfür gibt es in SQL den Befehl CAST.

[sql]
SELECT CAST(1234.56 AS CHAR);
Ergebnis: 1234.56
[/sql]

Kein großer Unterschied bis jetzt. Da aber das Ergebnis nun eine Zeichenkette anstelle eines Dezimalwertes ist, kann man diese auch mit Zeichenkettenoperatoren weiter bearbeiten. Um nun die Nullen aufzufüllen, bietet sich LPAD an. Die Zeichenkette mit dem Dezimaltrennzeichen hat insgesamt eine Länge von neun Zeichen, daher fülle ich die Zeichenkette auf neun Zeichen auf.

[sql]
SELECT LPAD(CAST(1234.56 AS CHAR),9,’0′);
Ergebnis: 001234.56
[/sql]

Wir sind fast am Ziel. Es fehlt nur noch das in Deutschland gebräuchliche Komma als Dezimaltrennzeichen. Ersetzen wir den Punkt einfach mittels REPLACE

[sql]
SELECT REPLACE(LPAD(CAST(1234.56 AS CHAR),9,’0′),‘.‘,‘,‘);
Ergebnis: 001234,56
[/sql]

…und schon ist die Aufgabe gelöst! 🙂


Beitrag veröffentlicht

in

, , ,

von

Schlagwörter:

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.