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%