Tento článek poskytuje odkaz na standardní 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.
Některé příklady používají specifikátory přesnosti (tyto se skládají z jedné nebo dvou číslic připojených ke specifikátoru formátu). Specifikátory přesnosti mohou mít hodnotu od 0 do 99, která určuje přesnost výsledku. Jak to funguje, závisí na použitém specifikátoru formátu. U některých specifikátorů formátu uvede celkový počet číslic ve výsledku, u jiných počet desetinných míst. V ostatních případech bude zcela ignorován.
Formátovat řetězec | Popis/Příklad |
---|---|
C nebo c | Měna . Převede číslo na řetězec, který představuje částku v měně. K určení počtu desetinných míst lze použít volitelný specifikátor přesnosti. Příklady (s použitím různých kultur) : SELECT FORMAT(12.34, 'C', 'en-us') R1, FORMAT(012.34, 'C', 'iv') R2, FORMAT(12.34, 'C0', 'ja-jp') R3, FORMAT(12.54, 'c', 'vi-vn') R4, FORMAT(12.54, 'c0', 'en-au') R5, FORMAT(12.54, 'c4', 'en-gb') R6; +--------+--------+------+---------+------+----------+ | R1 | R2 | R3 | R4 | R5 | R6 | |--------+--------+------+---------+------+----------| | $12.34 | ¤12.34 | ¥12 | 12,54 ₫ | $13 | £12.5400 | +--------+--------+------+---------+------+----------+ |
D nebo d | Desetinné . Převede číslo na řetězec desetinných číslic (0-9) s předponou znaménkem mínus, pokud je číslo záporné. Tento formát je podporován pouze pro integrální typy. Pokud je použit (volitelný) specifikátor přesnosti, udává celkový počet číslic ve výsledku. Pokud číslo nemá tolik číslic, bude vlevo doplněno nulami. Příklady : SELECT FORMAT(123, 'D') R1, FORMAT(123, 'D0') R2, FORMAT(123, 'D3') R3, FORMAT(123, 'd4') R4, FORMAT(0123, 'd5') R5, FORMAT(1.23, 'd') R6; +------+------+------+------+-------+------+ | R1 | R2 | R3 | R4 | R5 | R6 | |------+------+------+------+-------+------| | 123 | 123 | 123 | 0123 | 00123 | NULL | +------+------+------+------+-------+------+ |
E nebo e | Exponenciální (vědecká) . Převede číslo na řetězec ve tvaru „-d.ddd…E+ddd“ nebo „-d.ddd…e+ddd“, kde každé „d“ označuje číslici (0-9). Pokud je číslo záporné, řetězec začíná znaménkem mínus. Před desetinnou čárkou vždy předchází přesně jedna číslice. Pokud je použit specifikátor přesnosti, udává, kolik číslic je napravo od desetinné čárky. Pokud je vynechán, zobrazí se vpravo od desetinné čárky šest číslic. Příklady : SELECT FORMAT(1024.1234567, 'E') R1, FORMAT(1024.1234567, 'E0') R2, FORMAT(1024.1234567, 'E3') R3, FORMAT(1024.1234567, 'e4') R4, FORMAT(1024.1234567, 'e7') R5; +---------------+--------+------------+-------------+----------------+ | R1 | R2 | R3 | R4 | R5 | |---------------+--------+------------+-------------+----------------| | 1.024123E+003 | 1E+003 | 1.024E+003 | 1.0241e+003 | 1.0241235e+003 | +---------------+--------+------------+-------------+----------------+ |
F nebo f | Pevný bod . Převede číslo na řetězec ve tvaru „-ddd.ddd…“, kde každé „d“ označuje číslici (0-9). Pokud je číslo záporné, řetězec začíná znaménkem mínus. K určení počtu desetinných míst lze použít volitelný specifikátor přesnosti. Příklady : SELECT FORMAT(12.345, 'F', 'en-us') R1, FORMAT(12.345, 'F0', 'en-us') R2, FORMAT(12.345, 'f3', 'en-us') R3, FORMAT(12.345, 'f4', 'en-us') R4, FORMAT(12.345, 'f5', 'en-us') R5, FORMAT(12.345, 'f', 'vi-vn') R6; +-------+------+--------+---------+----------+-------+ | R1 | R2 | R3 | R4 | R5 | R6 | |-------+------+--------+---------+----------+-------| | 12.35 | 12 | 12.345 | 12.3450 | 12.34500 | 12,35 | +-------+------+--------+---------+----------+-------+ |
G nebo g | Obecné . Převede číslo do kompaktnějšího zápisu s pevnou řádovou čárkou nebo vědeckého zápisu v závislosti na typu čísla a na tom, zda je přítomen přesný specifikátor. Pokud je použit (volitelný) specifikátor přesnosti, definuje maximální počet platných číslic, které se mohou objevit ve výsledném řetězci. Pokud je vynechán nebo je-li hodnota nula, je přesnost určena typem čísla.
Vysvětlení, jak může typ čísla ovlivnit přesnost, najdete v oficiální dokumentaci .NET. Možná budete muset odkazovat na oficiální dokumentaci pro Příklady : SELECT FORMAT(12.345, 'G', 'en-us') R1, FORMAT(12.345, 'G0', 'en-us') R2, FORMAT(12.345, 'g3', 'en-us') R3, FORMAT(12.345, 'g4', 'en-us') R4, FORMAT(12.345, 'g5', 'en-us') R5, FORMAT(12.345, 'g', 'vi-vn') R6; +--------+--------+------+-------+--------+--------+ | R1 | R2 | R3 | R4 | R5 | R6 | |--------+--------+------+-------+--------+--------| | 12.345 | 12.345 | 12.3 | 12.35 | 12.345 | 12,345 | +--------+--------+------+-------+--------+--------+ |
N nebo n | Číslo . Převede číslo na řetězec ve tvaru „-d,ddd,ddd.ddd…“. Pokud je použit (volitelný) specifikátor přesnosti, definuje počet číslic napravo od desetinné čárky. Příklady : SELECT FORMAT(1234.56, 'N', 'en-us') R1, FORMAT(1234.56, 'N0', 'en-us') R2, FORMAT(1234.56, 'n3', 'en-us') R3, FORMAT(1234.56, 'n4', 'en-us') R4, FORMAT(1234.56, 'n', 'vi-vn') R5; +----------+-------+-----------+------------+----------+ | R1 | R2 | R3 | R4 | R5 | |----------+-------+-----------+------------+----------| | 1,234.56 | 1,235 | 1,234.560 | 1,234.5600 | 1.234,56 | +----------+-------+-----------+------------+----------+ |
P nebo p | Procento . Vynásobí číslo 100 a převede ho na řetězec, který představuje procento. Pokud je použit specifikátor přesnosti, definuje počet desetinných míst. Příklady : SELECT FORMAT(.1234, 'P', 'en-us') R1, FORMAT(.1234, 'P0', 'en-us') R2, FORMAT(.1250, 'p0', 'en-us') R3, FORMAT(.1250, 'p3', 'en-us') R4, FORMAT(.1250, 'p', 'vi-vn') R5; +---------+------+------+----------+--------+ | R1 | R2 | R3 | R4 | R5 | |---------+------+------+----------+--------| | 12.34 % | 12 % | 13 % | 12.500 % | 12,50% | +---------+------+------+----------+--------+ |
R nebo r | Zpáteční . Pokusí se zajistit, aby číselná hodnota převedená na řetězec byla analyzována zpět na stejnou číselnou hodnotu. Specifikátor přesnosti je při použití tohoto specifikátoru formátu ignorován. POZNÁMKA :V .NET je tento specifikátor formátu podporován pouze u Single , Dvounásobek a BigInteger číselné typy. Také pro Double hodnoty, tento specifikátor formátu v některých případech selže při úspěšném zpětném přenosu původní hodnoty. Při použití s Double také nabízí slabý výkon a Svobodný typy.
Dále dokumentace .NET doporučuje, aby se tento specifikátor formátu používal pro BigInteger pouze typ. Doporučuje se Zdvojit typy používají
Co to znamená pro SQL Server? V zásadě byste se tomuto specifikátoru formátu na serveru SQL pravděpodobně měli vyhnout. Místo toho použijte
Příklady DECLARE @myFloat float, @myReal real; SET @myFloat = '123456789.1234567'; SET @myReal = @myFloat; SELECT @myFloat 'Float Value', @myReal 'Real Value'; SELECT FORMAT(@myFloat, 'R') 'Float R', FORMAT(@myFloat, 'G17') 'Float G17', FORMAT(@myReal, 'R') 'Real R', FORMAT(@myReal, 'G9') 'Real G9'; +------------------+--------------+ | Float Value | Real Value | |------------------+--------------| | 123456789.123457 | 1.234568E+08 | +------------------+--------------+ (1 row affected) +-------------------+-------------------+-----------+-----------+ | Float R | Float G17 | Real R | Real G9 | |-------------------+-------------------+-----------+-----------| | 123456789.1234567 | 123456789.1234567 | 123456792 | 123456792 | +-------------------+-------------------+-----------+-----------+ (1 row affected) |
X nebo x | Hexadecimální . Převede číslo na řetězec hexadecimálních číslic.
Použitý případ (tj. Tento specifikátor formátu je podporován pouze pro integrální typy. Pokud je použit (volitelný) specifikátor přesnosti, udává celkový počet číslic ve výsledku. Pokud číslo nemá tolik číslic, bude vlevo doplněno nulami. Příklady : SELECT FORMAT(123, 'X') R1, FORMAT(123, 'x') R2, FORMAT(123, 'x6') R3, FORMAT(12345678, 'x') R4, FORMAT(123, 'x6') R5, FORMAT(-123, 'x') R6, FORMAT(1.23, 'X') R7; +------+------+--------+--------+--------+----------+------+ | R1 | R2 | R3 | R4 | R5 | R6 | R7 | |------+------+--------+--------+--------+----------+------| | 7B | 7b | 00007b | bc614e | 00007b | ffffff85 | NULL | +------+------+--------+--------+--------+----------+------+ |
Výše uvedený seznam je úplným seznamem platných řetězců vlastního číselného formátu .NET na základě informací z oficiální dokumentace .NET pro standardní řetězce číselného formátu na webu společnosti Microsoft v době psaní tohoto článku.
Důvod, proč jsou relevantní pro SQL Server FORMAT()
Funkce je, že tato funkce přijímá pouze platné formátovací řetězce .NET Framework.
Kromě výše uvedeného standardu formátovat řetězce, můžete také použít vlastní formátovací řetězce. Zde je úplný seznam vlastní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.