Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Chaînes de format numérique personnalisées prises en charge par FORMAT() dans SQL Server

Cet article fournit une référence pour les spécificateurs de format numérique personnalisés qui peuvent être utilisés lors du formatage des nombres à l'aide de FORMAT() fonction dans SQL Server. Exemples inclus.

Zéro espace réservé . Remplace le zéro par le chiffre correspondant s'il y en a un ; sinon, zéro apparaît dans la chaîne de résultat.

Exemples :

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

Espace réservé pour les chiffres . Remplace le symbole "#" par le chiffre correspondant s'il y en a un ; sinon, aucun chiffre n'apparaît dans la chaîne de résultat.

Aucun chiffre n'apparaît dans la chaîne de résultat si le chiffre correspondant dans la chaîne d'entrée est un 0 non significatif.

Exemples :

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

Point décimal . Détermine l'emplacement du séparateur décimal dans la chaîne de résultat.

Exemples :

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

Séparateur de groupe et mise à l'échelle des nombres . Peut être utilisé à la fois comme séparateur de groupe (également appelé séparateur de milliers) et comme spécificateur de mise à l'échelle numérique.

  • En tant que séparateur de groupe , il insère un caractère séparateur de groupe localisé entre chaque groupe.
  • En tant que spécificateur de mise à l'échelle des nombres , il divise un nombre par 1 000 pour chaque virgule spécifiée.

Pour spécifier un séparateur de groupe, placez une ou plusieurs virgules entre les espaces réservés à deux chiffres (0 ou #) qui mettent en forme les chiffres entiers d'un nombre. Cela se traduit par l'insertion d'un caractère séparateur de groupe entre chaque groupe de nombres dans la partie intégrale de la sortie.

Pour spécifier un spécificateur d'échelle numérique, placez une ou plusieurs virgules immédiatement à gauche du point décimal explicite ou implicite.

Exemples – En tant que séparateur de groupe :

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

Exemples – En tant que spécificateur de mise à l'échelle des nombres :

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

Exemples – Comme les deux :

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

Espace réservé pour le pourcentage . Multiplie un nombre par 100 et insère un symbole de pourcentage localisé dans la chaîne de résultat.

Exemples :

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

Espace réservé pour mille . Multiplie un nombre par 1000 et insère un symbole localisé pour mille dans la chaîne de résultat.

Exemples :

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

Notation exponentielle . Si suivi d'au moins un zéro (0 ), formate le résultat en notation exponentielle. Le cas (E ou e ) indique la casse du symbole d'exposant dans la chaîne de résultat. Le nombre de zéros suivant le E ou e caractère détermine le nombre minimum de chiffres dans l'exposant. Un signe plus (+ ) indique qu'un caractère de signe précède toujours l'exposant. Un signe moins (- ) indique qu'un caractère de signe précède uniquement les exposants négatifs.

Exemples :

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

Caractère d'échappement . Le caractère suivant est interprété comme un littéral plutôt que comme un spécificateur de format personnalisé.

Exemple :

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

Délimiteur de chaîne littérale . Indique que les caractères inclus doivent être copiés dans la chaîne de résultat sans modification.

Exemple :

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

Séparateur de section . Il s'agit d'un spécificateur de format conditionnel qui définit des sections avec des chaînes de format distinctes pour les nombres positifs, négatifs et nuls. Cela vous permet d'appliquer une mise en forme différente à un nombre selon que sa valeur est positive, négative ou nulle. Une chaîne de format personnalisé peut contenir jusqu'à trois sections séparées par des points-virgules.

  • Une rubrique  :La chaîne de format s'applique à toutes les valeurs (comme dans les exemples précédents).
  • Deux sections :La première section s'applique aux valeurs positives et aux zéros, et la deuxième section s'applique aux valeurs négatives.

    Si le nombre à formater est négatif, mais devient zéro après arrondi selon le format de la deuxième section, le zéro résultant est formaté selon la première section.

  • Trois sections :La première section s'applique aux valeurs positives, la deuxième section s'applique aux valeurs négatives et la troisième section s'applique aux zéros.

    La deuxième section peut être laissée vide (en n'ayant rien entre les points-virgules), auquel cas la première section s'applique à toutes les valeurs non nulles.

    Si le nombre à formater est différent de zéro, mais devient zéro après arrondi selon le format dans la première ou la deuxième section, le zéro résultant est formaté selon la troisième section.

Notez que les valeurs négatives sont toujours affichées sans signe moins lorsque des séparateurs de section sont utilisés. Si vous souhaitez que la valeur formatée finale ait un signe moins, vous devez inclure explicitement le signe moins dans la chaîne de format personnalisée. Cela s'applique également à tout autre formatage préexistant associé à un nombre.

Exemple – Une section (pas de séparateurs de section)
Il s'agit d'une chaîne de format typique composée d'une section (comme dans les exemples précédents). Par conséquent, aucun séparateur de séparation n'est utilisé.

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

Notez que le signe moins reste intact, car je n'ai utilisé aucun séparateur de section.

Exemples – Deux sections :

/* 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) |
+----------------------+----------------------+

Exemples – Trois sections :

/* 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)         |
+----------------+-----------------+-----------+-------------------+

Tous les autres caractères. Le caractère est copié dans la chaîne de résultat sans changement.

Exemple :

SELECT FORMAT(12, '# °C') Result;
+----------+
| Result   |
|----------|
| 12 °C    |
+----------+
Formater la chaîne Description/Exemple
0
#
.
,
%

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

\

'string'
"string"

;

Autre

La liste ci-dessus est une liste complète des chaînes de format personnalisées .NET valides, basée sur les informations de la documentation officielle .NET pour les chaînes de format personnalisées sur le site Web de Microsoft au moment de la rédaction.

La raison pour laquelle ils sont pertinents pour SQL Server FORMAT() est qu'elle n'accepte que les chaînes de format .NET Framework valides.

En plus de la personnalisation ci-dessus chaînes de format, vous pouvez également utiliser standard formater les chaînes. Voici une liste complète des chaînes de format numérique standard que vous pouvez utiliser avec SQL Server.

Vous pouvez également formater les valeurs de date et d'heure. Voir la liste des chaînes de format de date et d'heure standard ainsi que les chaînes de format de date et d'heure personnalisées que vous pouvez utiliser avec le FORMAT() fonction.

Si vous essayez toujours de comprendre ce qu'est une chaîne de format, consultez Qu'est-ce qu'une chaîne de format dans SQL Server ? pour une compréhension de base des chaînes de format et comment elles se rapportent au FORMAT() une fonction.