Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Niestandardowe ciągi formatu liczbowego obsługiwane przez FORMAT() w SQL Server

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.

  • Jako separator grup , wstawia zlokalizowany znak separatora grup pomiędzy każdą grupę.
  • Jako specyfikator skalowania liczb , dzieli liczbę przez 1000 dla każdego podanego przecinka.

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 ‰ |
+--------+--------+------+--------+

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

Zapis wykładniczy . Jeśli następuje co najmniej jedno zero (0 ), formatuje wynik przy użyciu notacji wykładniczej. Sprawa (E lub e ) wskazuje wielkość liter symbolu wykładnika w ciągu wynikowym. Liczba zer po E lub e znak określa minimalną liczbę cyfr w wykładniku. Znak plusa (+ ) wskazuje, że znak zawsze poprzedza wykładnik. Znak minus (- ) wskazuje, że znak znaku poprzedza tylko wykładniki ujemne.

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    |
+----------+

'string'
"string"

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.

  • Jedna sekcja :Ciąg formatu dotyczy wszystkich wartości (tak jak w poprzednich przykładach).
  • Dwie sekcje :Pierwsza sekcja dotyczy wartości dodatnich i zer, a druga sekcja dotyczy wartości ujemnych.

    Jeśli liczba do sformatowania jest ujemna, ale staje się zerem po zaokrągleniu zgodnie z formatem w drugiej sekcji, wynikowe zero jest formatowane zgodnie z pierwszą sekcją.

  • Trzy sekcje :Pierwsza sekcja dotyczy wartości dodatnich, druga sekcja dotyczy wartości ujemnych, a trzecia sekcja dotyczy zer.

    Druga sekcja może pozostać pusta (nie mając nic między średnikami), w którym to przypadku pierwsza sekcja dotyczy wszystkich wartości niezerowych.

    Jeśli liczba do sformatowania jest niezerowa, ale staje się zerem po zaokrągleniu zgodnie z formatem w pierwszej lub drugiej sekcji, wynikowe zero jest formatowane zgodnie z trzecią sekcją.

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)
Jest to typowy ciąg formatu składający się z jednej sekcji (tak jak w poprzednich przykładach). Dlatego nie stosuje się separatorów.

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ć.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Napraw komunikat 8116 „Argument typ danych varchar jest nieprawidłowy dla argumentu 1 funkcji session_context” w programie SQL Server

  2. Jakie kolumny generalnie tworzą dobre indeksy?

  3. Wskazówki dotyczące naprawiania fragmentacji indeksu SQL Server

  4. Równoległe przywracanie kopii zapasowej serwera SQL Server -2

  5. Instalacja i konfiguracja dzienników serwera SQL i przywracanie po awarii -1