sql >> Databasteknik >  >> RDS >> Oracle

Formatera ett tal som en procentandel i Oracle

Även om Oracle Database har en TO_CHAR(number) funktion som låter oss formatera siffror, den tillhandahåller inte ett formatelement för procenttecknet.

Därför, om vi vill formatera ett tal som en procentsats i Oracle Database, måste vi sammanfoga procenttecknet och talet.

Exempel

Vi kan använda CONCAT() funktion för att sammanfoga siffran och procenttecknet.

Vi kan fortfarande använda TO_CHAR(number) funktion för att formatera talet så att det har önskade decimaler, inledande nollor (eller inte), etc:

SELECT CONCAT(TO_CHAR(18, 'fm00D00'), '%')
FROM DUAL;

Resultat:

18.00%

Här använde jag 0 formatelement, vilket innebär att sifferpositionen alltid kommer att skrivas ut, även om den innehåller en inledande/efterföljande nolla.

Jag använde också fm formatmodifierare för att undertrycka eventuella inledande/efterföljande nollor eller blanksteg.

Här är den med några andra 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 göra en beräkning mot antalet vid behov:

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 det här fallet inkluderade jag 9 formatera element så att eventuella inledande nollor utelämnades.

Utesluter TO_CHAR() Funktion

Om vi ​​inte har något specifikt behov av att formatera talet annat än att konvertera det till ett procentformat, behöver vi inte ens TO_CHAR() funktion:

SELECT CONCAT(18, '%')
FROM DUAL;

Resultat:

18%

Konkatenationsoperatören

Ett annat sätt att sammanfoga siffran och procenttecknet är att använda sammanlänkningsoperatorn (|| ):

SELECT 18 || '%'
FROM DUAL;

Resultat:

18%

Och här är den med TO_CHAR() funktion tillagd för extra formatering:

SELECT TO_CHAR(18, 'fm00D00') || '%'
FROM DUAL;

Resultat:

18.00%

  1. SQLite Self-Join

  2. Hur SQLite Trim() fungerar

  3. URL-strängformat för att ansluta till Oracle-databas med JDBC

  4. SQL INSERT INTO från flera tabeller