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

Naformátujte číslo jako měnu v SQL

Některé DBMS mají funkce, které nám umožňují formátovat čísla jako měnu pouhým předáním příslušného formátovacího řetězce. Tím se číslo převede na řetězec s příslušným symbolem měny, oddělovačem skupiny a desetinnou čárkou (je-li to relevantní).

Jiné DBMS to neusnadňují a vy musíte nejprve udělat trochu práce.

Níže jsou uvedeny příklady použití SQL k formátování čísel jako měny v některých z nejpopulárnějších DBMS.

Oracle

Oracle Database nám poskytuje TO_CHAR(number) funkce, která nám umožňuje formátovat čísla předáním formátovacího modelu (nebo formátovacího řetězce). Tuto funkci můžeme použít k vrácení čísla jako měny.

Oracle poskytuje několik prvků formátu pro vrácení symbolu měny v závislosti na tom, jaký symbol měny požadujete – symbol místní měny, symbol měny ISO nebo symbol duální měny.

Zde je příklad všech tří:

ALTER SESSION SET NLS_TERRITORY = 'Denmark';
SELECT 
    TO_CHAR(12345, 'fmL99G999D00') AS "r1",
    TO_CHAR(12345, 'fmC99G999D00') AS "r3",
    TO_CHAR(12345, 'fmU99G999D00') AS "r3"
FROM DUAL;

Výsledek:

            r1              r3            r3 
______________ _______________ _____________ 
kr12.345,00    DKK12.345,00    €12.345,00   

Další informace a příklady naleznete v části Jak formátovat číslo jako měnu v Oracle.

SQL Server

SQL Server poskytuje funkci FORMAT(), která nám umožňuje formátovat čísla a data. C specifikátor formátu lze použít k vrácení čísla jako měny:

SELECT FORMAT(1234, 'C');

Výsledek:

$1,234.00

S formátovacím řetězcem můžete dělat i další věci, například určit, kolik desetinných míst se má vrátit.

Funkce také přijímá volitelný třetí argument, který lze použít k určení národního prostředí, které se má použít pro formátování čísla a měny. Různá národní prostředí používají různé konvence pro svá čísla a měnu.

Další informace a příklady naleznete v části Jak formátovat čísla jako měnu na serveru SQL Server (T-SQL).

PostgreSQL

PostgreSQL má money datový typ, který bude při výstupu obvykle formátován v místní měně:

SELECT CAST(3145 as money);

Výsledek:

$3,145.00

PostgreSQL má také TO_CHAR() funkce, která převede hodnotu na řetězec a naformátuje ji na základě dodaného formátovacího řetězce. Proto jej můžeme použít k formátování čísel jako měny předáním příslušného formátovacího řetězce.

Další informace naleznete v části Jak formátovat čísla jako měnu v PostgreSQL.

MySQL

V MySQL musíme udělat trochu více práce. MySQL nám neposkytuje specifikátor formátu pro symbol měny, takže musíme poskytnout svůj vlastní:

SELECT CONCAT('$', FORMAT(1234.5678, 2));

Výsledek:

$1,234.57

Zde jsme použili CONCAT() funkci pro spojení symbolu měny a čísla a použili jsme FORMAT() funkci naformátovat číslo do požadovaného formátu.

Je možné určit národní prostředí pro číselné formátování. To určuje, které znaky se použijí pro oddělovač skupiny a desetinnou čárku.

Další informace naleznete v části Jak formátovat čísla jako měnu v MySQL.

MariaDB

MariaDB je velmi podobná MySQL a můžeme použít stejnou metodu, kterou jsme použili s MySQL.

Zde je příklad, který určuje národní prostředí, které se má použít pro formátování čísel:

SELECT CONCAT('€', FORMAT(8790.2398, 2, 'de_DE'));

Výsledek:

€8.790,24

V tomto případě jsme dodali symbol eura ( ) a naformátovali číslo tak, aby používala konvence číslování používané v Německu.

Další informace naleznete v části Formátování čísla jako měny v MariaDB.

SQLite

SQLite má PRINTF() funkce, která nám umožňuje formátovat číslo na základě formátovacího řetězce. Můžeme to například použít k formátování čísla na daný počet desetinných míst plus přidat symbol měny.

SELECT PRINTF("$%.2f", 123.457);

Výsledek:

$123.46

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("$%.2f", 123.457);

Výsledek:

$123.46

Další informace o FORMAT() naleznete v dokumentaci SQLite funkce.


  1. Porozumění ukládání do mezipaměti Laravel:Fasáda mezipaměti a Redis

  2. Dotazování na rozsah v Redis - Spring Data Redis

  3. Jak zkontrolovat, zda je socket aktivní (připojený) v socket.io s více uzly a socket.io-redis

  4. Jak nainstalovat Redis