Oracle
 sql >> Datenbank >  >> RDS >> Oracle

4 Möglichkeiten zum Formatieren einer Zahl ohne Dezimalstellen in Oracle

Wenn Sie Oracle Database verwenden, können Sie Funktionen wie TO_CHAR(number) verwenden um Zahlen als String zurückzugeben. Auf diese Weise können Sie die Zahl so formatieren, dass sie eine bestimmte Anzahl von Dezimalstellen hat – einschließlich keiner Dezimalstellen, wenn Sie dies wünschen.

Sie können auch Funktionen wie ROUND(number) verwenden und TRUNC(number) um die Zahl auf keine Dezimalstellen zu runden oder zu kürzen.

Es gibt auch den CAST() Funktion, mit der Sie einen Datentyp in eine Ganzzahl umwandeln können, wodurch alle Dezimalstellen effektiv entfernt werden.

Der TO_CHAR() Funktion

Hier ist ein Beispiel, das TO_CHAR(number) verwendet Funktion:

SELECT TO_CHAR(1234.56, 'fm99G999')
FROM DUAL;

Ergebnis:

1,235

In diesem Fall besteht mein Formatmodell aus:

  • ein fm , ein Formatmodifikator, der alle führenden und/oder abschließenden Füllzeichen entfernt, die dem Ergebnis hinzugefügt werden könnten.
  • mehrere 9 Zeichen, die jede Ziffer darstellen
  • ein G Zeichen, das ein gebietsschemaabhängiges Gruppentrennzeichen darstellt

Wichtig zu beachten ist, dass D nicht verwendet wird format-Element, das das formatabhängige Dezimalzeichen ist. Es werden auch keine wörtlichen Dezimalzeichen (wie Kommas oder Punkte) verwendet. Und weil es keine Dezimalzeichen hat, folgen auf ein solches Zeichen natürlich keine Ziffern.

Wenn wir es täten ein Dezimalzeichen haben, beliebige 9 oder 0 Elemente rechts davon könnten dazu führen, dass Dezimalstellen im Ergebnis enthalten sind.

Beispiel:

SELECT TO_CHAR(7, 'fm99D00')
FROM DUAL;

Ergebnis:

7.00

Um die abschließenden Nullen zu unterdrücken, können wir die 0 ändern Zeichen zu 9 s. Entfernen Sie jedoch fm Modifikator kann dazu führen, dass nachgestellte Nullen erscheinen, selbst wenn 9 verwendet wird format-Element.

Hier ist ein Vergleich, um zu veranschaulichen, was ich meine:

SELECT 
    TO_CHAR(7, 'fm99D00') AS "r1",
    TO_CHAR(7, 'fm99D99') AS "r2",
    TO_CHAR(7, '99D99') AS "r3"
FROM DUAL;

Ergebnis:

     r1    r2        r3 
_______ _____ _________ 
7.00    7.      7.00   

Das ROUND() Funktion

Hier ist ein Beispiel, das ROUND(number) verwendet Funktion:

SELECT ROUND(1234.56, 0)
FROM DUAL;

Ergebnis:

1235

Das ROUND() Funktion rundet eine Zahl auf eine gegebene Dezimalstelle. Hier haben wir null Nachkommastellen angegeben, wodurch alle Nachkommastellen aus der Zahl entfernt werden.

In diesem Fall wurde die Zahl aufgerundet.

Der TRUNC() Funktion

Hier ist ein Beispiel, das TRUNC(number) verwendet Funktion:

SELECT TRUNC(1234.56, 0)
FROM DUAL;

Ergebnis:

1234

Der TRUNC() Funktion kürzt eine Zahl auf eine bestimmte Dezimalstelle. Es erfolgt keine Rundung. Daher wurde diese Zahl ohne Rundung auf null Dezimalstellen gekürzt.

Der CAST() Funktion

Hier ist ein Beispiel, das CAST() verwendet Funktion:

SELECT CAST(1234.56 AS INT) 
FROM DUAL;

Ergebnis:

1235

Der CAST() Funktion konvertiert ihr Argument in einen anderen Datentyp. In diesem Fall haben wir die Zahl in eine ganze Zahl umgewandelt. Ganze Zahlen haben keine Dezimalstellen, daher werden alle Nachkommastellen aus dem Ergebnis entfernt (einschließlich des Dezimalzeichens). Beachten Sie, dass das Ergebnis aufgerundet wurde.