Oracle
 sql >> Database >  >> RDS >> Oracle

Formatta un numero come percentuale in Oracle

Anche se Oracle Database ha un TO_CHAR(number) funzione che ci permette di formattare i numeri, non fornisce un elemento di formato per il segno di percentuale.

Pertanto, se vogliamo formattare un numero come percentuale in Oracle Database, dobbiamo concatenare il segno di percentuale e il numero.

Esempio

Possiamo usare il CONCAT() funzione per concatenare il numero e il segno di percentuale.

Possiamo ancora usare il TO_CHAR(number) funzione per formattare il numero in modo che abbia le posizioni decimali desiderate, zeri iniziali (o meno), ecc:

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

Risultato:

18.00%

Qui, ho usato il 0 format, il che significa che la posizione della cifra verrà sempre stampata, anche se contiene uno zero iniziale/finale.

Ho anche usato fm modificatore di formato per eliminare eventuali zeri iniziali/finali o spazi vuoti.

Eccolo con alcuni altri modelli di formato:

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;

Risultato:

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

Possiamo eseguire un calcolo rispetto al numero, se necessario:

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

Risultato:

       1         2 
________ _________ 
1.80%    18.00%   

In questo caso ho incluso il 9 format in modo da omettere tutti gli zeri iniziali.

Omissione di TO_CHAR() Funzione

Se non abbiamo alcuna esigenza specifica di formattare il numero oltre a convertirlo in un formato percentuale, non abbiamo nemmeno bisogno del TO_CHAR() funzione:

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

Risultato:

18%

L'operatore di concatenazione

Un altro modo per concatenare il numero e il segno di percentuale consiste nell'utilizzare l'operatore di concatenazione (|| ):

SELECT 18 || '%'
FROM DUAL;

Risultato:

18%

Ed eccolo qui con TO_CHAR() funzione aggiunta per una formattazione extra:

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

Risultato:

18.00%