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

3 Möglichkeiten zum Formatieren einer Zahl mit 2 Dezimalstellen in Oracle

Wenn Sie Oracle Database verwenden, können Sie Funktionen wie TO_CHAR(number) verwenden um Zahlen als String zurückzugeben, formatiert auf zwei Dezimalstellen (oder wie viele Dezimalstellen Sie benötigen).

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

Der TO_CHAR() Funktion

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

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

Ergebnis:

1.23

In diesem Fall hat die ursprüngliche Zahl mehr als zwei Dezimalstellen, und daher wird sie im Ergebnis einfach auf die angegebene Anzahl von Nullen gekürzt, die auf das Dezimal-/Basiszeichen folgen (D ) im Formatmodell.

Der Grund, warum ich Nullen nach dem Dezimalzeichen verwendet habe, ist, um bei Bedarf nachgestellte Nullen bereitzustellen.

Beispiel:

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

Ergebnis:

7.00

Wenn ich die abschließenden Nullen nicht möchte, kann ich die 0 ändern Zeichen zu 9 s.

Hier ist ein Vergleich der beiden:

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

Ergebnis:

     r1    r2 
_______ _____ 
7.00    7.   

Mit 9 s ergab in diesem Fall ein Radix-Zeichen, aber keine Dezimalstellen.

Ich sollte darauf hinweisen, dass fm ist ein Formatmodifikator, der jegliche Auffüllung entfernt, die möglicherweise auf das Ergebnis angewendet wird. Sie können dies weglassen, wenn es Ihnen nichts ausmacht, dass das Ergebnis aufgefüllt wird. Wenn Sie dies tun, könnten Sie jedoch mit nachgestellten Nullen enden, selbst wenn Sie die 9 verwenden format-Element.

Folgendes passiert, wenn ich fm entferne aus dem vorherigen Beispiel:

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

Ergebnis:

       r1        r2 
_________ _________ 
  7.00      7.00   

Natürlich sind Sie nicht nur auf zwei Dezimalstellen beschränkt – Sie können bei Bedarf mehr Dezimalstellen in Ihrem Formatmodell angeben.

Beispiel:

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

Ergebnis:

7.0000

Das ROUND() Funktion

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

SELECT ROUND(1.2573, 2)
FROM DUAL;

Ergebnis:

1.26

Tder ROUND() Funktion rundet eine Zahl auf eine gegebene Dezimalstelle. Hier haben wir zwei Dezimalstellen angegeben, aber wir hätten jede beliebige Zahl angeben können.

In diesem Fall wurde die Zahl aufgerundet.

Der TRUNC() Funktion

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

SELECT TRUNC(1.2573, 2)
FROM DUAL;

Ergebnis:

1.25

Der TRUNC() Funktion kürzt eine Zahl auf eine bestimmte Dezimalstelle. Es erfolgt keine Rundung.