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

Formater et tal som en procentdel i Oracle

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%

  1. Brug MySQL relationsdatabaser på Debian 5 (Lenny)

  2. Sådan fungerer SQLite Quote()

  3. Sådan opgraderes MariaDB 5.5 til MariaDB 10.1 på CentOS/RHEL 7 og Debian Systems

  4. Hurtigere alternativ i Oracle til SELECT COUNT(*) FROM nogetable