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%