sql >> Databáze >  >> NoSQL >> MongoDB

Jak formátovat čísla v SQL

Většina hlavních RDBMS nám poskytuje způsoby, jak formátovat čísla pomocí SQL. Některé poskytují pouze základní možnosti formátování, zatímco jiné jsou pokročilejší.

Níže jsou uvedeny příklady formátování čísla v některých populárnějších RDBMS.

MySQL

V MySQL můžeme použít FORMAT() funkce pro formátování čísla do určitého formátu. Tato funkce přijímá tři parametry; číslo, počet desetinných míst a volitelné národní prostředí:

SELECT FORMAT(123456.789, 2);

Výsledek:

123,456.79

Jak již bylo zmíněno, můžete také předat třetí argument pro určení národního prostředí, které se má použít pro vzor formátování. Viz příklad Jak formátovat čísla v MySQL.

Chcete-li formátovat čísla jako měnu, viz Jak formátovat čísla jako měnu v MySQL.

Oracle

Oracle Database nám poskytuje řadu možností, pokud jde o formátování čísel.

Konkrétně TO_CHAR(number) Funkce nám umožňuje formátovat číslo na základě našeho vlastního modelu formátu.

Příklad:

SELECT 
    TO_CHAR(12345, 'fmL99G999D00')
FROM DUAL;

Výsledek:

$12,345.00

První argument je číslo k formátování a druhý argument je model formátu. Model formátu se skládá z jednoho nebo více prvků formátu, z nichž každý představuje jiný prvek ve formátovaném výstupu.

Ve výše uvedeném příkladu používáme 9 znak reprezentující každou číslici a 0 znak pro výstup číslice nebo nuly (v závislosti na tom, zda číslice na dané pozici existuje či nikoli). Používáme také G pro oddělovač skupin podle národního prostředí a D pro oddělovač desetinných míst s vědomím národního prostředí. fm prvek potlačí veškeré odsazení na začátku nebo na konci, které by mohlo být použito na výsledek.

Zde je úplný seznam prvků formátu, které můžete použít pro svůj model formátu při formátování čísel.

Existují další způsoby formátování čísel v Oracle. Například LPAD() funkci lze použít k převodu čísel na řetězec a jejich formátování přesně tak, jak chcete za běhu. Funkce jako CAST() může mít také vliv na to, jak je číslo formátováno, v závislosti na datovém typu, do kterého je přetypováno.

Další podrobnosti a příklady naleznete v části Jak formátovat čísla v Oracle.

PostgreSQL

Stejně jako Oracle má PostgreSQL také TO_CHAR() a funguje to v podstatě stejným způsobem:

SELECT TO_CHAR(923, 'fm000G000th');

Výsledek:

000,923rd

Zde jsem použil 0 formátovací prvek pro výstup úvodních nul, i když původní číslo na tomto místě neobsahovalo žádné číslice. V tomto případě jsem použil th format element pro převod čísla na jeho pořadové číslo. Také jsem použil G pro oddělovač skupin podle národního prostředí.

Zde je seznam vzorů šablon, ze kterých se může formátovací řetězec skládat při formátování čísel, a také modifikátory formátu.

Dalším způsobem, jak formátovat číslo v PostgreSQL, je převést ho na money datový typ. Čísla uložená jako money type se vypisují ve formátu, který zohledňuje národní prostředí, s příslušným symbolem měny, oddělovačem skupiny, oddělovačem desetinných míst atd.:

SELECT CAST(10000 as money);

Výsledek:

$10,000.00

Další příklady formátování čísel v PostgreSQL naleznete v části Jak formátovat čísla v PostgreSQL.

SQL Server

SQL Server má FORMAT() funkce, která funguje podobně jako Oracle a PostgreSQL TO_CHAR() funkce, která vám umožňuje formátovat čísla na základě formátovacího řetězce:

SELECT 
    FORMAT(123456.789, 'N') AS "Number",
    FORMAT(123456.789, 'P') AS "Percent",
    FORMAT(123456.789, 'C') AS "Currency";

Výsledek:

+------------+----------------+-------------+
| Number     | Percent        | Currency    |
|------------+----------------+-------------|
| 123,456.79 | 12,345,678.90% | $123,456.79 |
+------------+----------------+-------------+

Tento příklad ukazuje tři standardní specifikátory formátu – každý z nich vydává číslo ve specifickém formátu.

Můžeme také použít vlastní specifikátory formátu, které nám umožňují vytvořit si vlastní formát v případě, že standardní formát není to, co chceme.

Můžete také dělat věci, jako je formátování čísel v jejich hexadecimálním ekvivalentu nebo použití exponenciálního zápisu atd.

A můžete předat volitelný třetí argument pro určení národního prostředí, pro které se má číslo formátovat (formátuje číslo podle konvencí daného národního prostředí).

Další příklady naleznete v části Jak formátovat čísla na serveru SQL.

MariaDB

Stejně jako MySQL má MariaDB a FORMAT() funkce, která poskytuje základní formátování čísel.

Zde je příklad použití této funkce k formátování čísla pomocí různých národních prostředí:

SELECT 
    FORMAT(123456.789, 2, 'ta_IN') AS "Tamil, India",
    FORMAT(123456.789, 2, 'de_DE') AS "German, Germany",
    FORMAT(123456.789, 2, 'zh_HK') AS "Chinese, Hong Kong";

Výsledek:

+--------------+-----------------+--------------------+
| Tamil, India | German, Germany | Chinese, Hong Kong |
+--------------+-----------------+--------------------+
| 1,23,456.79  | 123.456,79      | 123,456.79         |
+--------------+-----------------+--------------------+

Další příklady viz Jak formátovat čísla v MariaDB.

SQLite

SQLite je omezenější než ostatní DBMS, pokud jde o formátování čísel. Existují však způsoby, jak získat základní formátování čísel:

SELECT PRINTF("%,d", 123456789);

Výsledek:

123,456,789

PRINTF() Funkce může vydávat oddělovače skupin pro celá čísla, ale ne pro reálná čísla/čísla s plovoucí desetinnou čárkou. Chcete-li formátovat čísla s reálnou/plovoucí desetinnou čárkou, budete muset udělat trochu více práce. Příklad toho, co mám na mysli, najdete v části Formát čísel s čárkou v SQLite.

Aktualizovat :SQLite 3.38.0 (vydáno 22. února 2022) přejmenováno na PRINTF() funkce na FORMAT() . Původní PRINTF() jméno je zachováno jako alias pro zpětnou kompatibilitu.

Výše uvedený příklad lze tedy změnit na tento:

SELECT FORMAT("%,d", 123456789);

Výsledek:

123,456,789

  1. jak iterovat mongo kurzor ve smyčce v pythonu

  2. HDFS Disk Balancer Úvod, operace a funkce

  3. Limit hloubky pole vnořeného objektu MongoDB

  4. Jak dosáhnout rollbacku v transakcích v mongo?