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

Formatieren Sie eine Zahl als Prozentsatz in Oracle

Auch wenn Oracle Database einen TO_CHAR(number) hat Funktion, mit der wir Zahlen formatieren können, bietet sie kein Formatelement für das Prozentzeichen.

Wenn wir also eine Zahl als Prozentsatz in Oracle Database formatieren möchten, müssen wir das Prozentzeichen und die Zahl verketten.

Beispiel

Wir können den CONCAT() verwenden Funktion zum Verketten der Zahl und des Prozentzeichens.

Wir können immer noch TO_CHAR(number) verwenden Funktion, um die Zahl so zu formatieren, dass sie die gewünschten Dezimalstellen, führende Nullen (oder nicht) usw. enthält:

SELECT CONCAT(TO_CHAR(18, 'fm00D00'), '%')
FROM DUAL;

Ergebnis:

18.00%

Hier habe ich den 0 verwendet Formatelement, was bedeutet, dass die Ziffernposition immer gedruckt wird, auch wenn sie eine führende/nachgestellte Null enthält.

Ich habe auch den fm verwendet Formatmodifikator, um führende/nachgestellte Nullen oder Leerzeichen zu unterdrücken.

Hier ist es mit einigen anderen Formatmodellen:

SELECT 
    CONCAT(TO_CHAR(7, 'fm00'), '%') AS "1",
    CONCAT(TO_CHAR(7, 'fm99'), '%') AS "2",
    CONCAT(TO_CHAR(7.4567, 'fm0D00'), '%') AS "3",
    CONCAT(TO_CHAR(7, 'fm0D00'), '%') AS "4"
FROM DUAL;

Ergebnis:

     1     2        3        4 
______ _____ ________ ________ 
07%    7%    7.46%    7.00%   

Wir können bei Bedarf eine Berechnung mit der Zahl durchführen:

SELECT 
    CONCAT(TO_CHAR(18 * 0.1, 'fm99D00'), '%') AS "1",
    CONCAT(TO_CHAR(0.18 * 100, 'fm99D00'), '%') AS "2"
FROM DUAL;

Ergebnis:

       1         2 
________ _________ 
1.80%    18.00%   

In diesem Fall habe ich die 9 eingefügt format-Element, sodass alle führenden Nullen weggelassen wurden.

Weglassen des TO_CHAR() Funktion

Wenn wir die Zahl nicht anders formatieren müssen, als sie in ein Prozentformat umzuwandeln, brauchen wir nicht einmal TO_CHAR() Funktion:

SELECT CONCAT(18, '%')
FROM DUAL;

Ergebnis:

18%

Der Verkettungsoperator

Eine andere Möglichkeit, die Zahl und das Prozentzeichen zu verketten, ist die Verwendung des Verkettungsoperators (|| ):

SELECT 18 || '%'
FROM DUAL;

Ergebnis:

18%

Und hier ist es mit dem TO_CHAR() Funktion für zusätzliche Formatierung hinzugefügt:

SELECT TO_CHAR(18, 'fm00D00') || '%'
FROM DUAL;

Ergebnis:

18.00%