sql >> Databáze >  >> RDS >> Sqlserver

Jak formátovat čísla s čárkami na serveru SQL

SQL Server nám poskytuje rychlý a snadný způsob, jak formátovat čísla s čárkami vloženými na příslušné místo. Například 1234,56 se může stát 1 234,56 . Nebo se může stát 1 234,56 , pokud je to národní prostředí, které používáte.

Příklad

Můžeme použít FORMAT() funkce pro formátování čísel čárkami. Když použijeme tuto funkci, předáme číslo a formátovací řetězec. Formátovací řetězec určuje, jak bude číslo po vrácení formátováno.

FORMAT() funkce vrací formátovanou řetězcovou reprezentaci čísla na základě hodnot, které poskytujeme.

Zde je příklad k demonstraci:

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í řetězce číselného formátu:

  • Pokud chceme pouze formátované číslo, můžeme použít N
  • Pokud chceme, aby byl formátován jako procento, můžeme použít P
  • Pro měnu můžeme použít C .

SQL Server je dostatečně chytrý, aby znal vaše aktuální národní prostředí (na základě jazyka aktuální relace) a formátuje výsledek podle konvencí daného národního prostředí. To je důležité, protože ne každý žije v zemi, která používá čárku jako oddělovač tisíců a tečku jako oddělovač desetinných míst.

Navíc FORMAT() funkce přijímá třetí volitelný argument „kultura“, který vám umožňuje explicitně specifikovat národní prostředí.

Zde je příklad toho, co mám na mysli:

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

Výsledek:

+------------+-----------------+--------------+
| Number     | Percent         | Currency     |
|------------+-----------------+--------------|
| 123.456,79 | 12.345.678,90 % | 123.456,79 € |
+------------+-----------------+--------------+

V tomto případě specifikuji de-de jako kultura, což znamená, že výsledky budou formátovány podle německých konvencí. Vidíme, že jako oddělovač skupin se používají tečky a jako oddělovač desetinných míst se používá čárka

.

Pokud je vynechán třetí argument, použije se jazyk aktuální relace.

Řetězce vlastního formátu

Je také možné použít vlastní specifikátory formátu k vytvoření vlastních vlastních formátovacích řetězců. Například # znak je zástupný znak číslice, 0 je nulový zástupný symbol, čárka (, ) je zástupný symbol pro oddělovač skupiny a tečku (. ) je zástupný symbol pro desetinný oddělovač.

To platí bez ohledu na používané národní prostředí – SQL Server určí, které znaky použít pro skupinu a oddělovače desetinných míst na základě aktuálního národního prostředí.

Příklad:

SELECT 
    FORMAT(123456.789, '###,###,###.##', 'en-us') AS "US English",
    FORMAT(123456.789, '###,###,###.##', 'de-de') AS "German";

Výsledek:

+--------------+------------+
| US English   | German     |
|--------------+------------|
| 123,456.79   | 123.456,79 |
+--------------+------------+

V obou případech jsem použil stejný formátovací řetězec, ale SQL Server vrátil skupinu a oddělovač desetinných míst, které byly použitelné pro zadané národní prostředí (které bylo zadáno pomocí třetího argumentu „culture“).

Ve výše uvedeném příkladu obsahuje formátovací řetězec více číslic než skutečné číslo. Bez ohledu na to se SQL Server rozhodl nevracet žádné úvodní nuly. Je to proto, že jsme použili # specifikátor formátu.

Pokud chceme, aby SQL Server vracel úvodní nuly, můžeme použít 0 specifikátor formátu:

SELECT 
    FORMAT(123456.789, '000,000,000.00', 'en-us') AS "US English",
    FORMAT(123456.789, '000,000,000.00', 'de-de') AS "German";

Výsledek:

+----------------+----------------+
| US English     | German         |
|----------------+----------------|
| 000,123,456.79 | 000.123.456,79 |
+----------------+----------------+

  1. Zobrazení historie úloh SQL Server Agent pomocí SSMS

  2. Jak změním schéma db na dbo

  3. Automatická správa indexů v Azure SQL Database

  4. Kdy použít MongoDB nebo jiné databázové systémy orientované na dokumenty?