sql >> Databáze >  >> RDS >> Oracle

Naformátujte číslo jako procento v Oracle

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%

  1. Jak interpretovat hodnotu txid_current() PosgreSQL

  2. Jak sečíst hodnoty sloupce v SQL?

  3. ORDER BY ... POUŽITÍ klauzule v PostgreSQL

  4. Nelze zmenšit databázi „pouze pro čtení“ | Zmenšit protokol transakcí při používání skupiny dostupnosti AlwaysOn