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

Řetězce vlastního číselného formátu podporované FORMAT() na serveru SQL Server

Tento článek poskytuje odkaz na vlastní specifikátory číselného formátu, které lze použít při formátování čísel pomocí FORMAT() funkce na serveru SQL Server. Zahrnuty příklady.

E0
E+0
E-0
e0
e+0
e-0

\

'string'
"string"

;

Formátovat řetězec Popis/Příklad
0

Nulový zástupný symbol . Nahradí nulu odpovídající číslicí, pokud je přítomna jedna; jinak se ve výsledném řetězci objeví nula.

Příklady :

SELECT 
  FORMAT(12.34, '0') R1,
  FORMAT(012.34, '00') R2,
  FORMAT(12.34, '000') R3,
  FORMAT(012.34, '0000') R4,
  FORMAT(12.54, '00') R5;
+------+------+------+------+------+
| R1   | R2   | R3   | R4   | R5   |
|------+------+------+------+------|
| 12   | 12   | 012  | 0012 | 13   |
+------+------+------+------+------+
#

Zástupný znak číslic . Nahrazuje symbol „#“ odpovídající číslicí, pokud je přítomna; jinak se ve výsledném řetězci neobjeví žádná číslice.

Pokud je odpovídající číslice ve vstupním řetězci nevýznamná 0, ve výsledném řetězci se neobjeví žádná číslice.

Příklady :

SELECT 
  FORMAT(12.34, '#') R1,
  FORMAT(012.34, '##') R2,
  FORMAT(12.34, '###') R3,
  FORMAT(012.34, '####') R4,
  FORMAT(12.54, '##') R5;
+------+------+------+------+------+
| R1   | R2   | R3   | R4   | R5   |
|------+------+------+------+------|
| 12   | 12   | 12   | 12   | 13   |
+------+------+------+------+------+
.

Desetinná čárka . Určuje umístění oddělovače desetinných míst ve výsledném řetězci.

Příklady :

SELECT 
  FORMAT(12.34, '0.0', 'en-US') R1,
  FORMAT(12.34, '.00', 'en-US') R2,
  FORMAT(12.34, '.', 'en-US') R3,
  FORMAT(12.34, '.00', 'fr-FR') R4;
+------+-------+------+-------+
| R1   | R2    | R3   | R4    |
|------+-------+------+-------|
| 12.3 | 12.34 | 12   | 12,34 |
+------+-------+------+-------+
,

Oddělovač skupin a změna měřítka čísel . Lze použít jako oddělovač skupin (také známý jako oddělovač tisíců) i jako specifikátor změny velikosti.

  • Jako oddělovač skupin , vloží mezi každou skupinu znak lokalizovaného oddělovače skupiny.
  • Jako specifikátor měřítka čísel , vydělí číslo 1000 pro každou zadanou čárku.

Chcete-li určit oddělovač skupiny, umístěte jednu nebo více čárek mezi dva zástupné znaky (0 nebo #), které formátují celé číslice čísla. Výsledkem je vložení oddělovacího znaku skupiny mezi každou číselnou skupinu v integrální části výstupu.

Chcete-li zadat specifikátor měřítka čísel, umístěte jednu nebo více čárek bezprostředně nalevo od explicitní nebo implicitní desetinné čárky.

Příklady – jako oddělovač skupin :

SELECT 
  FORMAT(12345678, '#,#', 'en-US') 'US English',
  FORMAT(12345678, '#,#', 'fr-FR') 'French',
  FORMAT(12345678, '#,#', 'es-ES') 'Spanish';
+--------------+------------+------------+
| US English   | French     | Spanish    |
|--------------+------------+------------|
| 12,345,678   | 12 345 678 | 12.345.678 |
+--------------+------------+------------+

Příklady – jako specifikátor měřítka čísel :

SELECT 
  FORMAT(12000, '#,', 'en-US') 'R1',
  FORMAT(1234567890, '#,', 'en-US') R2,
  FORMAT(1234567890, '#,,', 'en-US') R3;
+------+---------+------+
| R1   | R2      | R3   |
|------+---------+------|
| 12   | 1234568 | 1235 |
+------+---------+------+

Příklady – jako obojí :

SELECT 
  FORMAT(1234567890, '#,#,', 'en-US') R1,
  FORMAT(1234567890, '#,#,,', 'en-US') R2;
+-----------+-------+
| R1        | R2    |
|-----------+-------|
| 1,234,568 | 1,235 |
+-----------+-------+
%

Procentuální zástupný symbol . Vynásobí číslo 100 a do výsledného řetězce vloží lokalizovaný symbol procenta.

Příklady :

SELECT 
  FORMAT(0.1234, '#.# %', 'en-US') R1,
  FORMAT(0.1235, '#.#%', 'zh-cn') R2,
  FORMAT(0.125, '#. %', 'en-US') R3,
  FORMAT(0.1234, '%#.00,', 'tr') R4,
  FORMAT(0.1234, '#.#%', 'it') R5;
+--------+-------+------+--------+-------+
| R1     | R2    | R3   | R4     | R5    |
|--------+-------+------+--------+-------|
| 12.3 % | 12.4% | 13 % | %12,34 | 12,3% |
+--------+-------+------+--------+-------+

Zástupný symbol promile . Vynásobí číslo 1000 a do výsledného řetězce vloží lokalizovaný symbol promile.

Příklady :

SELECT 
  FORMAT(0.01234, '#.# ‰', 'en-US') 'R1',
  FORMAT(0.01235, '#.# ‰', 'en-US') R2,
  FORMAT(0.0125, '#. ‰', 'en-US') R3,
  FORMAT(0.01234, '#.# ‰', 'fr-FR') R4;
+--------+--------+------+--------+
| R1     | R2     | R3   | R4     |
|--------+--------+------+--------|
| 12.3 ‰ | 12.4 ‰ | 13 ‰ | 12,3 ‰ |
+--------+--------+------+--------+

Exponenciální zápis . Pokud následuje alespoň jedna nula (0 ), formátuje výsledek pomocí exponenciálního zápisu. Případ (E nebo e ) označuje velikost písmen exponentu ve výsledném řetězci. Počet nul za E nebo e znak určuje minimální počet číslic v exponentu. Znaménko plus (+ ) označuje, že znak vždy předchází exponent. Znaménko mínus (- ) označuje, že znak znaménka předchází pouze záporným exponentům.

Příklady :

SELECT 
  FORMAT(123456789, '0e0') R1,
  FORMAT(123456789, '0e+0') R2,
  FORMAT(123456789, '0E+00') R3,
  FORMAT(1234.56789, '0.0##e+00') R4,
  FORMAT(12.3456789-12, '0e-0') R5;
+------+------+-------+-----------+------+
| R1   | R2   | R3    | R4        | R5   |
|------+------+-------+-----------+------|
| 1e8  | 1e+8 | 1E+08 | 1.235e+03 | 3e-1 |
+------+------+-------+-----------+------+

Únikový znak . Způsobí, že další znak bude interpretován jako doslovný, nikoli jako vlastní specifikátor formátu.

Příklad :

SELECT FORMAT(123, '\#0000') Result;
+----------+
| Result   |
|----------|
| #0123    |
+----------+

Doslovný oddělovač řetězce . Označuje, že uzavřené znaky by měly být zkopírovány do výsledného řetězce beze změny.

Příklad :

SELECT FORMAT(23, '## Degrees') Result;
+------------+
| Result     |
|------------|
| 23 Degrees |
+------------+

Oddělovač sekcí . Toto je specifikátor podmíněného formátu, který definuje sekce se samostatnými formátovacími řetězci pro kladná, záporná a nulová čísla. To vám umožňuje použít na číslo různé formátování v závislosti na tom, zda je jeho hodnota kladná, záporná nebo nula. Řetězec vlastního formátu může obsahovat až tři části oddělené středníky.

  • Jedna sekce :Formátovací řetězec platí pro všechny hodnoty (stejně jako v předchozích příkladech).
  • Dvě sekce :První část platí pro kladné hodnoty a nuly a druhá část platí pro záporné hodnoty.

    Pokud je číslo, které se má formátovat, záporné, ale po zaokrouhlení podle formátu ve druhé části se stane nulou, bude výsledná nula formátována podle první části.

  • Tři sekce :První část platí pro kladné hodnoty, druhá část platí pro záporné hodnoty a třetí část platí pro nuly.

    Druhý oddíl může zůstat prázdný (tím, že mezi středníky není nic), v takovém případě se první oddíl vztahuje na všechny nenulové hodnoty.

    Pokud je číslo, které se má formátovat, nenulové, ale po zaokrouhlení podle formátu v první nebo druhé části se stane nulou, výsledná nula se naformátuje podle třetí části.

Všimněte si, že záporné hodnoty jsou vždy zobrazeny bez znaménka mínus, když jsou použity oddělovače sekcí. Pokud chcete, aby konečná formátovaná hodnota měla znaménko minus, musíte znaménko minus explicitně zahrnout jako součást vlastního formátovacího řetězce. To platí také pro jakékoli jiné již existující formátování spojené s číslem.

Příklad – jedna sekce (bez oddělovačů sekcí)
Toto je typický formátovací řetězec skládající se z jedné sekce (stejně jako v předchozích příkladech). Proto se nepoužívají žádné separační separátory.

SELECT 
  FORMAT(123, '0 (Number)') Positive,
  FORMAT(-123, '0 (Number)') Negative,
  FORMAT(0, '0 (Number)') Zero;
+--------------+---------------+------------+
| Positive     | Negative      | Zero       |
|--------------+---------------+------------|
| 123 (Number) | -123 (Number) | 0 (Number) |
+--------------+---------------+------------+

Všimněte si, že znaménko mínus zůstává nedotčeno, protože jsem nepoužil žádné oddělovače sekcí.

Příklady – dvě sekce :

/* EXAMPLE 1 - Same format string, different values */
SELECT 
  FORMAT(123,  '0 (Positive or Zero); 0 (Negative)') Positive,
  FORMAT(-123, '0 (Positive or Zero); 0 (Negative)') Negative,
  FORMAT(0,    '0 (Positive or Zero); 0 (Negative)') Zero;
+------------------------+-----------------+----------------------+
| Positive               | Negative        | Zero                 |
|------------------------+-----------------+----------------------|
| 123 (Positive or Zero) |  123 (Negative) | 0 (Positive or Zero) |
+------------------------+-----------------+----------------------+

/* EXAMPLE 2 - Rounding. 
Negative values rounded to zero get 
formatted under the first format string. 
*/
SELECT 
  FORMAT(0.1,  '0 (Positive or Zero); 0 (Negative)') Positive,
  FORMAT(-0.1, '0 (Positive or Zero); 0 (Negative)') Negative;
+----------------------+----------------------+
| Positive             | Negative             |
|----------------------+----------------------|
| 0 (Positive or Zero) | 0 (Positive or Zero) |
+----------------------+----------------------+

Příklady – tři sekce :

/* EXAMPLE 1 - Basic Usage */
SELECT FORMAT(123, '0 (Positive); 0 (Negative); 0 (Zero)') Result;
+----------------+
| Result         |
|----------------|
| 123 (Positive) |
+----------------+

/* EXAMPLE 2 - Same format string, different values */
SELECT 
  FORMAT(123,   '0 (Positive); 0 (Negative); 0 (Zero)') 'Positive',
  FORMAT(-123,  '0 (Positive); 0 (Negative); 0 (Zero)') 'Negative',
  FORMAT(0,     '0 (Positive); 0 (Negative); 0 (Zero)') 'Zero',
  FORMAT(0.123, '0 (Positive); 0 (Negative); 0 (Zero)') 'Rounded to Zero';

+----------------+----------------+-----------+-------------------+
| Positive       | Negative       | Zero      | Rounded to Zero   |
|----------------+----------------+-----------+-------------------|
| 123 (Positive) | 123 (Negative) |  0 (Zero) |  0 (Zero)         |
+----------------+----------------+-----------+-------------------+

/* EXAMPLE 3 - Second format string is empty */
SELECT 
  FORMAT(123,   '0 (Positive);; 0 (Zero)') 'Positive',
  FORMAT(-123,  '0 (Positive);; 0 (Zero)') 'Negative',
  FORMAT(0,     '0 (Positive);; 0 (Zero)') 'Zero',
  FORMAT(0.123, '0 (Positive);; 0 (Zero)') 'Rounded to Zero';
+----------------+-----------------+-----------+-------------------+
| Positive       | Negative        | Zero      | Rounded to Zero   |
|----------------+-----------------+-----------+-------------------|
| 123 (Positive) | -123 (Positive) |  0 (Zero) |  0 (Zero)         |
+----------------+-----------------+-----------+-------------------+
Jiné

Všechny ostatní znaky. Znak se zkopíruje do výsledného řetězce beze změny.

Příklad :

SELECT FORMAT(12, '# °C') Result;
+----------+
| Result   |
|----------|
| 12 °C    |
+----------+

Výše uvedený seznam je úplným seznamem platných řetězců vlastního formátu .NET na základě informací z oficiální dokumentace .NET pro řetězce Custom Format Strings na webu společnosti Microsoft v době psaní tohoto článku.

Důvod, proč jsou relevantní pro SQL Server FORMAT() funkcí je, že přijímá pouze platné formátovací řetězce .NET Framework.

Kromě výše uvedených vlastních formátovací řetězce, můžete také použít standardní formátovací řetězce. Zde je úplný seznam standardních řetězců číselného formátu, které můžete použít se serverem SQL.

Můžete také formátovat hodnoty data a času. Podívejte se na seznam standardních řetězců formátu data a času a také vlastních řetězců formátu data a času, které můžete použít s FORMAT() funkce.

Pokud se stále snažíte pochopit, co je formátovací řetězec, přečtěte si téma Co je formátovací řetězec na serveru SQL Server? pro základní pochopení formátovacích řetězců a toho, jak se vztahují k FORMAT() funkce.


  1. Jak zjistím, která transakce způsobuje stav zámku Čekání na metadata tabulky?

  2. Příliš dlouhá chyba řetězce vývojáře Oracle Sql

  3. Použití aktuálního času v UTC jako výchozí hodnoty v PostgreSQL

  4. 7 Možnosti pro povolení Pipes (||) jako operátora zřetězení v MariaDB