Selvom Oracle Database har en TO_CHAR(number)
funktion, der giver os mulighed for at formatere tal, giver den ikke et formatelement til procenttegnet.
Derfor, hvis vi ønsker at formatere et tal som en procentdel i Oracle Database, skal vi sammenkæde procenttegnet og tallet.
Eksempel
Vi kan bruge CONCAT()
funktion til at sammenkæde tallet og procenttegnet.
Vi kan stadig bruge TO_CHAR(number)
funktion til at formatere tallet, så det har de ønskede decimaler, foranstillede nuller (eller ej) osv.:
SELECT CONCAT(TO_CHAR(18, 'fm00D00'), '%')
FROM DUAL;
Resultat:
18.00%
Her brugte jeg 0
formatelement, hvilket betyder, at cifferpositionen altid vil blive udskrevet, selvom den indeholder et indledende/efterfølgende nul.
Jeg brugte også fm
formatmodifikator for at undertrykke eventuelle førende/efterstillede nuller eller blanktegn.
Her er den med nogle andre formatmodeller:
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;
Resultat:
1 2 3 4 ______ _____ ________ ________ 07% 7% 7.46% 7.00%
Vi kan udføre en beregning mod antallet, hvis det kræves:
SELECT
CONCAT(TO_CHAR(18 * 0.1, 'fm99D00'), '%') AS "1",
CONCAT(TO_CHAR(0.18 * 100, 'fm99D00'), '%') AS "2"
FROM DUAL;
Resultat:
1 2 ________ _________ 1.80% 18.00%
I dette tilfælde inkluderede jeg 9
formater element, så eventuelle foranstillede nuller blev udeladt.
Udladelse af TO_CHAR()
Funktion
Hvis vi ikke har noget specifikt behov for at formatere tallet andet end at konvertere det til et procentformat, så har vi ikke engang brug for TO_CHAR()
funktion:
SELECT CONCAT(18, '%')
FROM DUAL;
Resultat:
18%
Konkatenationsoperatøren
En anden måde at sammenkæde tallet og procenttegnet på er at bruge sammenkædningsoperatoren (||
):
SELECT 18 || '%'
FROM DUAL;
Resultat:
18%
Og her er den med TO_CHAR()
funktion tilføjet til ekstra formatering:
SELECT TO_CHAR(18, 'fm00D00') || '%'
FROM DUAL;
Resultat:
18.00%