Přestože má databáze Oracle TO_CHAR(number) funkce, která nám umožňuje formátovat čísla, neposkytuje prvek formátu pro znak procenta.
Pokud tedy chceme v Oracle Database formátovat číslo jako procento, musíme zřetězit znak procenta a číslo.
Příklad
Můžeme použít CONCAT() funkce pro spojení čísla a znaménka procenta.
Stále můžeme použít TO_CHAR(number) funkci naformátovat číslo tak, aby mělo požadovaná desetinná místa, úvodní nuly (nebo ne) atd.:
SELECT CONCAT(TO_CHAR(18, 'fm00D00'), '%')
FROM DUAL; Výsledek:
18.00%
Zde jsem použil 0 format element, což znamená, že pozice číslice bude vždy vytištěna, i když obsahuje úvodní/koncovou nulu.
Také jsem použil fm modifikátor formátu pro potlačení jakýchkoli úvodních/koncových nul nebo mezer.
Zde je to s některými dalšími modely formátu:
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; Výsledek:
1 2 3 4 ______ _____ ________ ________ 07% 7% 7.46% 7.00%
V případě potřeby můžeme provést výpočet proti číslu:
SELECT
CONCAT(TO_CHAR(18 * 0.1, 'fm99D00'), '%') AS "1",
CONCAT(TO_CHAR(0.18 * 100, 'fm99D00'), '%') AS "2"
FROM DUAL; Výsledek:
1 2 ________ _________ 1.80% 18.00%
V tomto případě jsem zahrnul 9 formátovací prvek tak, aby všechny úvodní nuly byly vynechány.
Vynechání TO_CHAR() Funkce
Pokud nepotřebujeme číslo zformátovat jinak než ho převést na procentuální formát, pak ani nepotřebujeme TO_CHAR() funkce:
SELECT CONCAT(18, '%')
FROM DUAL; Výsledek:
18%
Operátor zřetězení
Dalším způsobem, jak zřetězit číslo a znak procenta, je použít operátor zřetězení (|| ):
SELECT 18 || '%'
FROM DUAL; Výsledek:
18%
A tady je to s TO_CHAR() přidána funkce pro dodatečné formátování:
SELECT TO_CHAR(18, 'fm00D00') || '%'
FROM DUAL; Výsledek:
18.00%