Ook al heeft Oracle Database een TO_CHAR(number)
functie waarmee we getallen kunnen opmaken, biedt het geen opmaakelement voor het procentteken.
Daarom, als we een getal willen opmaken als een percentage in Oracle Database, moeten we het percentageteken en het getal samenvoegen.
Voorbeeld
We kunnen de CONCAT()
. gebruiken functie om het getal en het procentteken samen te voegen.
We kunnen nog steeds de TO_CHAR(number)
. gebruiken functie om het getal zo op te maken dat het de gewenste decimalen heeft, voorloopnullen (of niet), enz:
SELECT CONCAT(TO_CHAR(18, 'fm00D00'), '%')
FROM DUAL;
Resultaat:
18.00%
Hier gebruikte ik de 0
format-element, wat betekent dat de cijferpositie altijd wordt afgedrukt, zelfs als deze een voorloop-/achterloopnul bevat.
Ik heb ook de fm
. gebruikt formaatmodifier om voorloop-/achterloopnullen of spaties te onderdrukken.
Hier is het met enkele andere formaatmodellen:
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;
Resultaat:
1 2 3 4 ______ _____ ________ ________ 07% 7% 7.46% 7.00%
We kunnen indien nodig een berekening uitvoeren op basis van het aantal:
SELECT
CONCAT(TO_CHAR(18 * 0.1, 'fm99D00'), '%') AS "1",
CONCAT(TO_CHAR(0.18 * 100, 'fm99D00'), '%') AS "2"
FROM DUAL;
Resultaat:
1 2 ________ _________ 1.80% 18.00%
In dit geval heb ik de 9
. toegevoegd format-element zodat eventuele voorloopnullen werden weggelaten.
De TO_CHAR()
weglaten Functie
Als we geen specifieke behoefte hebben om het getal op te maken, behalve om het te converteren naar een percentageformaat, dan hebben we niet eens de TO_CHAR()
nodig functie:
SELECT CONCAT(18, '%')
FROM DUAL;
Resultaat:
18%
De aaneenschakelingsoperator
Een andere manier om het getal en het percentageteken samen te voegen, is door de aaneenschakelingsoperator te gebruiken (||
):
SELECT 18 || '%'
FROM DUAL;
Resultaat:
18%
En hier is het met de TO_CHAR()
functie toegevoegd voor extra opmaak:
SELECT TO_CHAR(18, 'fm00D00') || '%'
FROM DUAL;
Resultaat:
18.00%