Problem:
Sie möchten einen String in PostgreSQL in einen Dezimalwert umwandeln.
Konvertieren wir den Wert in einem String in einen DECIMAL-Datentyp.
Lösung 1:
Wir verwenden den Operator ::. Hier ist die Abfrage, die Sie schreiben würden:
SELECT ' 5800.79 '::DECIMAL;
Hier ist das Ergebnis:
numerisch |
---|
5800.79 |
Wie Sie sehen, wurden die führenden und abschließenden Leerzeichen entfernt.
Diskussion:
Verwenden Sie den Operator ::, um Zeichenfolgen mit numerischen Werten in den Datentyp DECIMAL zu konvertieren. In unserem Beispiel haben wir die Zeichenfolge „5800,79“ in 5800,79 (ein DEZIMAL-Wert) konvertiert.
Dieser Operator wird verwendet, um zwischen verschiedenen Datentypen zu konvertieren. Es ist in PostgreSQL sehr beliebt. Sie können auch den Standard-SQL-Operator CAST()
verwenden , anstelle von ::
Operator.
Lösung 2:
SELECT CAST(' 5800.79 ' AS DECIMAL );
Hier ist das Ergebnis:
numerisch |
---|
5800.79 |
Beachten Sie, dass CAST()
, wie ::
entfernt zusätzliche Leerzeichen am Anfang und am Ende der Zeichenfolge, bevor sie in eine Zahl umgewandelt wird.
Die PostgreSQL-Datenbank bietet eine weitere Konvertierungsmöglichkeit. Verwenden Sie den TO_NUMBER()
Funktion, wenn Sie kompliziertere Zeichenfolgen konvertieren müssen. Diese Funktion benötigt zwei Argumente:die zu konvertierende Zeichenfolge und die Formatmaske, die angibt, wie jedes Zeichen in der Zeichenfolge interpretiert werden soll. Siehe das Beispiel unten:
Lösung 3:
SELECT TO_NUMBER(' 5 800,79- ', 'FM9G999D99S' );
Hier ist das Ergebnis:
numerisch |
---|
-5800.79 |
Der Formatstring beschreibt den String, der die Zahl enthält (Eingabewert als String). In diesem Beispiel enthält diese Maske das Symbol „FM“, das führende und nachfolgende Leerzeichen entfernt. Die „9“ steht für eine Ziffer (in unserem Beispiel 5) und „G“ steht für eine Zifferngruppe (in unserem Beispiel steht ein Leerzeichen für eine Tausendergruppe).
Als nächstes zeigt „999“ drei weitere Ziffern an (800).
Das „D“-Symbol gibt eine Dezimalmarke an (hier ein Punkt/Punkt „.“). Nach dem Dezimalzeichen kommt „99“ oder zwei Nachkommastellen.
Das letzte Symbol, „S“, gibt die Verwendung eines Plus- oder Minuszeichens an (unsere Zahl ist negativ, also erhält sie ein Minus).
Hier sind die am häufigsten verwendeten Symbole für diese Maske:
Symbol | Beschreibung |
---|---|
FM | führende Nullen und auffüllende Leerzeichen |
9 | eine Ziffer |
. | lokaler Dezimalpunkt |
G | Gruppentrenner |
D | lokales Dezimaltrennzeichen |
S | Minus- oder Pluszeichen |
L | lokales Währungssymbol |
Weitere Informationen zur numerischen Formatierung finden Sie in der PostgreSQL-Dokumentation.