Ä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%