sql >> Database >  >> RDS >> Oracle

Een getal opmaken als een percentage in Oracle

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%

  1. Asynchrone replicatie Automatische failover in MySQL 8.0.22

  2. Strings samenvoegen in SQLite

  3. Is het in Oracle mogelijk om een ​​record in te voegen of te UPDATEN via een weergave?

  4. XAMPP - MySQL wordt onverwacht afgesloten