Ten artykuł zawiera odniesienie do niestandardowych specyfikatorów formatu liczb, których można używać podczas formatowania liczb za pomocą funkcji FORMAT()
funkcja w SQL Server. Dołączone przykłady.
ciąg formatu | Opis/przykład |
---|---|
0 | Zerowy symbol zastępczy . Zastępuje zero odpowiednią cyfrą, jeśli istnieje; w przeciwnym razie w ciągu wynikowym pojawi się zero. Przykłady : 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 | +------+------+------+------+------+ |
# | Symbol zastępczy cyfry . Zastępuje symbol „#” odpowiednią cyfrą, jeśli jest obecny; w przeciwnym razie w ciągu wynikowym nie pojawia się żadna cyfra. Żadna cyfra nie pojawia się w ciągu wynikowym, jeśli odpowiadająca cyfra w ciągu wejściowym jest nieznaczącym 0. Przykłady : 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 | +------+------+------+------+------+ |
. | Krok dziesiętny . Określa położenie separatora dziesiętnego w ciągu wynikowym. Przykłady : 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 | +------+-------+------+-------+ |
, | Separator grup i skalowanie liczb . Może być używany zarówno jako separator grup (znany również jako separator tysięcy), jak i specyfikator skalowania liczb.
Aby określić separator grup, umieść jeden lub więcej przecinków między dwucyfrowymi symbolami zastępczymi (0 lub #), które formatują cyfry całkowite liczby. Powoduje to wstawienie znaku separatora grupy między każdą grupę liczb w integralnej części wyjścia. Aby określić specyfikator skalowania liczb, umieść jeden lub więcej przecinków bezpośrednio na lewo od jawnego lub niejawnego przecinka dziesiętnego. Przykłady – jako separator grup : 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 | +--------------+------------+------------+ Przykłady — jako specyfikator skalowania liczb : SELECT FORMAT(12000, '#,', 'en-US') 'R1', FORMAT(1234567890, '#,', 'en-US') R2, FORMAT(1234567890, '#,,', 'en-US') R3; +------+---------+------+ | R1 | R2 | R3 | |------+---------+------| | 12 | 1234568 | 1235 | +------+---------+------+ Przykłady – w obu przypadkach : SELECT FORMAT(1234567890, '#,#,', 'en-US') R1, FORMAT(1234567890, '#,#,,', 'en-US') R2; +-----------+-------+ | R1 | R2 | |-----------+-------| | 1,234,568 | 1,235 | +-----------+-------+ |
% | Procent zastępczy . Mnoży liczbę przez 100 i wstawia zlokalizowany symbol procentowy do ciągu wynikowego. Przykłady : 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% | +--------+-------+------+--------+-------+ |
‰ | Zastępczy na milion . Mnoży liczbę przez 1000 i wstawia zlokalizowany symbol promila do ciągu wynikowego. Przykłady : 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 ‰ | +--------+--------+------+--------+ |
|
Zapis wykładniczy . Jeśli następuje co najmniej jedno zero ( Przykłady : 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 | +------+------+-------+-----------+------+ |
| Postać ucieczki . Powoduje, że następny znak jest interpretowany jako literał, a nie jako niestandardowy specyfikator formatu. Przykład : SELECT FORMAT(123, '\#0000') Result; +----------+ | Result | |----------| | #0123 | +----------+ |
| Dosłowny ogranicznik ciągu . Wskazuje, że dołączone znaki powinny zostać skopiowane do ciągu wynikowego bez zmian. Przykład : SELECT FORMAT(23, '## Degrees') Result; +------------+ | Result | |------------| | 23 Degrees | +------------+ |
| Separator sekcji . Jest to warunkowy specyfikator formatu, który definiuje sekcje z oddzielnymi ciągami formatu dla liczb dodatnich, ujemnych i zerowych. Pozwala to zastosować różne formatowanie do liczby w zależności od tego, czy jej wartość jest dodatnia, ujemna czy zerowa. Ciąg formatu niestandardowego może zawierać do trzech sekcji oddzielonych średnikami.
Zauważ, że wartości ujemne są zawsze wyświetlane bez znaku minusa, gdy używane są separatory sekcji. Jeśli chcesz, aby końcowa sformatowana wartość miała znak minus, musisz jawnie dołączyć znak minus jako część niestandardowego ciągu formatu. Dotyczy to również każdego innego istniejącego formatowania związanego z numerem.
Przykład – jedna sekcja (bez separatorów sekcji) 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) | +--------------+---------------+------------+ Zwróć uwagę, że znak minus pozostaje nienaruszony, ponieważ nie użyłem żadnych separatorów sekcji. Przykłady – dwie sekcje : /* 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) | +----------------------+----------------------+ Przykłady – trzy sekcje : /* 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) | +----------------+-----------------+-----------+-------------------+ |
Inne | Wszystkie inne postacie. Znak jest kopiowany do ciągu wynikowego bez zmian. Przykład : SELECT FORMAT(12, '# °C') Result; +----------+ | Result | |----------| | 12 °C | +----------+ |
Powyższa lista jest pełną listą prawidłowych ciągów formatu niestandardowego .NET, opartą na informacjach z oficjalnej dokumentacji .NET dla ciągów formatu niestandardowego w witrynie Microsoft w momencie pisania tego tekstu.
Powód, dla którego są one istotne dla SQL Server FORMAT()
funkcja polega na tym, że akceptuje tylko prawidłowe ciągi formatu .NET Framework.
Oprócz powyższych niestandardowych ciągi formatu, możesz również użyć standardu ciągi formatu. Oto pełna lista ciągów standardowego formatu liczb, których można używać z SQL Server.
Możesz także sformatować wartości daty i godziny. Zobacz listę ciągów standardowego formatu daty i godziny, a także ciągów niestandardowego formatu daty i godziny, których można używać z FORMAT()
funkcja.
Jeśli nadal próbujesz zrozumieć, czym jest ciąg formatu, zobacz Co to jest ciąg formatu w programie SQL Server? dla podstawowego zrozumienia ciągów formatujących i ich związku z FORMAT()
funkcjonować.