sql >> Databáze >  >> RDS >> PostgreSQL

Jak formátovat čísla v PostgreSQL

Při práci s Postgres můžete použít to_char() funkce pro výstup čísel v daném formátu.

Funguje to tak, že uvedete dva argumenty. První argument je číslo, které se má formátovat. Druhý argument určuje, jak je formátován.

Vrácená hodnota je text .

V závislosti na vašich požadavcích můžete dát přednost převodu čísla na příslušný datový typ, například pomocí cast() funkce.

Příklady obou metod jsou uvedeny níže.

Příklad

Zde je základní příklad k demonstraci.

SELECT to_char(10, '99.99');

Výsledek:

10.00

9 ve skutečnosti mají v tomto kontextu zvláštní význam. Tento znak je jedním z platných vzorů šablon, ze kterých se může skládat formátovací řetězec při formátování čísel.

V případě 9 , určuje pozici číslice, ale pokud je to úvodní nula, bude nahrazena mezerou, zatímco pokud je to koncová nula a je zadán režim vyplnění, bude smazána.

Pokud odstraním desetinné místo a část ve zlomcích sekund, dostanu jiný výsledek.

SELECT to_char(10, '99');

Výsledek:

10

Vypustit úvodní nuly

9 můžete nahradit s 0 pokud chcete potlačit úvodní a koncové nuly, i když jsou nevýznamné.

Zde je příklad, který ukazuje rozdíl mezi těmito dvěma.

SELECT 
  to_char(0010, '9999') AS "9999",
  to_char(0010, '0000') AS "0000";

Výsledek:

 9999  | 0000  
-------+-------
    10 |  0010

Vzory šablon

Jak je vidět v předchozích příkladech, formátovací řetězec se skládá z jednoho nebo více vzorů šablon.

Například 9999 je formátovací řetězec, který se skládá ze čtyř vzorů šablon – každý z nich je 9 .

Desetinné místo je další vzor šablony.

Mohl jsem použít D místo desetinného místa. To používá aktuální národní prostředí pro skutečné formátování.

SELECT 
  to_char(10, '99.99') AS "99.99",
  to_char(10, '99D99') AS "99D99";

Výsledek:

 99.99  | 99D99  
--------+--------
  10.00 |  10.00

Úplný seznam vzorů a modifikátorů šablon najdete v tématu Vzory šablon a modifikátory pro numerické formátování v Postgresu.

Modifikátory vzoru šablon

Existuje také několik modifikátorů, které lze použít spolu se vzorem šablony. Ty mění způsob formátování výstupu v závislosti na použitém modifikátoru.

Konkrétně existují tři modifikátory, které lze použít s číselným formátováním.

Modifikátor Popis
FM prefix režim vyplnění (potlačení koncových nul a výplňových mezer)
TH přípona velká přípona pořadového čísla
th přípona malá přípona řadového čísla

Všimněte si, že první je přidán jako předpona vzoru šablony a další dva jsou přidány jako přípona.

Řadová čísla

Běžným požadavkem je převést číslo na ordinální číslo. Můžeme použít buď TH nebo th v závislosti na tom, zda chceme, aby přípona byla velká nebo malá.

Zde je příklad.

SELECT to_char(03, 'FM99th');

Výsledek:

3rd

V tomto případě jsem také použil FM pro potlačení všech prázdných míst a koncových nul.

Zde je srovnání mezi používáním FM a vynechání:

SELECT 
  to_char(03, '99th') AS "99th",
  to_char(03, 'FM99th') AS "FM99th";

Výsledek:

 99th  | FM99th 
-------+--------
   3rd | 3rd

Pokud se podíváte pozorně, první sloupec obsahuje úvodní mezery, zatímco druhý sloupec ne.

Měna

Dalším běžným požadavkem je výstup čísla v dané měně.

V tomto případě můžeme použít L vzor šablony pro zobrazení symbolu měny s ohledem na národní prostředí.

SELECT to_char(03, 'LFM99D00');

Výsledek:

$3.00

Čísla s podpisem

Existují také šablony vzorů pro podepsaná čísla.

Zde je příklad.

SELECT to_char(27, 'S99');

Výsledek:

+27

Zde jsem použil S přidat znak s ohledem na národní prostředí, který je ukotven k číslu.

V tomto případě to bylo kladné číslo. Zde je další příklad, který používá zápornou hodnotu.

SELECT to_char(-27, 'S99');

Výsledek:

-27

Existuje několik dalších vzorů šablon, které lze použít pro podepsaná čísla.

Příklady najdete v tématu Přidání znaménka plus/mínus před číslo v Postgresu.

A jak již bylo zmíněno, podívejte se na šablony a modifikátory pro číselné formátování v Postgresu, kde najdete úplný seznam modifikátorů šablon, které můžete použít při formátování čísel.

Typ dat

Jak již bylo zmíněno, to_char() funkce vypíše výsledek jako text .

V závislosti na vašich požadavcích může být lepší převést číslo na vhodnější datový typ.

Zde je příklad, který převádí číslo na peněžní data typ.

SELECT cast(10 as money);

Výsledek:

$10.00

  1. Neo4j - Odstranění uzlu pomocí Cypher

  2. Zlepšení výkonu Galera Cluster pro MySQL nebo MariaDB

  3. Zcela nová produkční databáze

  4. Chyba PHP, MySQL:Počet sloupců neodpovídá počtu hodnot na řádku 1