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.
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.
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 ( 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.
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í) 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.