PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

So formatieren Sie Zahlen in PostgreSQL

Wenn Sie mit Postgres arbeiten, können Sie to_char() verwenden Funktion zur Ausgabe von Zahlen in einem bestimmten Format.

Es funktioniert so, dass Sie zwei Argumente angeben. Das erste Argument ist die zu formatierende Zahl. Das zweite Argument bestimmt, wie es formatiert wird.

Der Rückgabewert ist text .

Je nach Bedarf ziehen Sie es vielleicht vor, die Zahl in den entsprechenden Datentyp umzuwandeln, zum Beispiel mit dem cast() Funktion.

Beispiele für beide Methoden sind unten.

Beispiel

Hier ist ein einfaches Beispiel zur Veranschaulichung.

SELECT to_char(10, '99.99');

Ergebnis:

10.00

Die 9 s haben in diesem Zusammenhang sogar eine besondere Bedeutung. Dieses Zeichen ist eines der gültigen Vorlagenmuster, aus denen Ihre Formatzeichenfolge beim Formatieren von Zahlen bestehen kann.

Im Fall von 9 , es gibt eine Ziffernposition an, aber wenn es sich um eine führende Null handelt, wird es durch ein Leerzeichen ersetzt, während es sich um eine nachgestellte Null handelt und der Füllmodus angegeben ist, wird es gelöscht.

Wenn ich die Dezimalstellen und Sekundenbruchteile entferne, erhalte ich ein anderes Ergebnis.

SELECT to_char(10, '99');

Ergebnis:

10

Führende Nullen löschen

Sie können 9 ersetzen mit 0 wenn Sie führende und nachgestellte Nullen unterdrücken möchten, auch wenn diese unbedeutend sind.

Hier ist ein Beispiel, das den Unterschied zwischen den beiden demonstriert.

SELECT 
  to_char(0010, '9999') AS "9999",
  to_char(0010, '0000') AS "0000";

Ergebnis:

 9999  | 0000  
-------+-------
    10 |  0010

Vorlagenmuster

Wie in den vorherigen Beispielen zu sehen, besteht die Formatzeichenfolge aus einem oder mehreren Vorlagenmustern.

Beispiel:9999 ist ein Formatstring, der aus vier Vorlagenmustern besteht – jedes davon ist 9 .

Die Dezimalstelle ist ein weiteres Vorlagenmuster.

Ich hätte ein D verwenden können statt der Dezimalstelle. Das verwendet das aktuelle Gebietsschema für die eigentliche Formatierung.

SELECT 
  to_char(10, '99.99') AS "99.99",
  to_char(10, '99D99') AS "99D99";

Ergebnis:

 99.99  | 99D99  
--------+--------
  10.00 |  10.00

Eine vollständige Liste der Vorlagenmuster und Modifikatoren finden Sie unter Vorlagenmuster und Modifikatoren für die numerische Formatierung in Postgres.

Vorlagenmuster-Modifikatoren

Es gibt auch einige Modifikatoren, die zusammen mit dem Vorlagenmuster verwendet werden können. Diese ändern die Art und Weise, wie die Ausgabe formatiert wird, abhängig vom verwendeten Modifikator.

Insbesondere gibt es drei Modifikatoren, die mit numerischer Formatierung verwendet werden können.

Modifizierer Beschreibung
FM Präfix Füllmodus (nachgestellte Nullen und Leerzeichen unterdrücken)
TH Suffix Ordinalzahl-Suffix in Großbuchstaben
th Suffix Suffix für Ordnungszahlen in Kleinbuchstaben

Beachten Sie, dass das erste als Präfix zum Vorlagenmuster hinzugefügt wird und die anderen zwei als Suffix hinzugefügt werden.

Ordnungszahlen

Eine häufige Anforderung besteht darin, eine Zahl in ihre Ordinalzahl umzuwandeln. Wir können entweder TH verwenden oder th dafür, je nachdem, ob das Suffix groß- oder kleingeschrieben werden soll.

Hier ist ein Beispiel.

SELECT to_char(03, 'FM99th');

Ergebnis:

3rd

In diesem Fall habe ich auch FM verwendet Leerzeichen und nachgestellte Nullen zu unterdrücken.

Hier ist ein Vergleich zwischen der Verwendung von FM und weglassen:

SELECT 
  to_char(03, '99th') AS "99th",
  to_char(03, 'FM99th') AS "FM99th";

Ergebnis:

 99th  | FM99th 
-------+--------
   3rd | 3rd

Wenn Sie genau hinsehen, enthält die erste Spalte führende Leerzeichen, die zweite Spalte jedoch nicht.

Währung

Eine weitere häufige Anforderung ist die Ausgabe einer Zahl in einer bestimmten Währung.

In diesem Fall können wir das L verwenden Vorlagenmuster zum Anzeigen eines gebietsschemaabhängigen Währungssymbols.

SELECT to_char(03, 'LFM99D00');

Ergebnis:

$3.00

Signierte Nummern

Es gibt auch Mustervorlagen für vorzeichenbehaftete Nummern.

Hier ist ein Beispiel.

SELECT to_char(27, 'S99');

Ergebnis:

+27

Hier habe ich S verwendet , um ein gebietsschemaabhängiges Zeichen hinzuzufügen, das mit der Nummer verankert ist.

In diesem Fall war es eine positive Zahl. Hier ist ein weiteres Beispiel, das einen negativen Wert verwendet.

SELECT to_char(-27, 'S99');

Ergebnis:

-27

Es gibt mehrere andere Vorlagenmuster, die für vorzeichenbehaftete Zahlen verwendet werden können.

Beispiele finden Sie unter Voranstellen eines Plus-/Minuszeichens an eine Zahl in Postgres.

Und wie bereits erwähnt, sehen Sie sich Template Patterns &Modifiers for Numeric Formatting in Postgres an, um eine vollständige Liste der Template-Modifikatoren zu erhalten, die Sie beim Formatieren von Zahlen verwenden können.

Datentyp

Wie bereits erwähnt, die to_char() Funktion gibt ihr Ergebnis als Text aus .

Abhängig von Ihren Anforderungen ist es möglicherweise besser, die Zahl in einen geeigneteren Datentyp umzuwandeln.

Hier ist ein Beispiel, das eine Zahl in Geld-Daten umwandelt Typ.

SELECT cast(10 as money);

Ergebnis:

$10.00