Catégories :

Fonctions de conversion

TO_CHAR , TO_VARCHAR

Convertit l’expression d’entrée en chaîne. Pour une entrée NULL, la sortie est NULL.

Ces fonctions sont synonymes.

Syntaxe

TO_CHAR( <expr> )
TO_CHAR( <numeric_expr> [, '<format>' ] )
TO_CHAR( <date_or_time_expr> [, '<format>' ] )
TO_CHAR( <binary_expr> [, '<format>' ] )

TO_VARCHAR( <expr> )
TO_VARCHAR( <numeric_expr> [, '<format>' ] )
TO_VARCHAR( <date_or_time_expr> [, '<format>' ] )
TO_VARCHAR( <binary_expr> [, '<format>' ] )
Copy

Arguments

Obligatoire :

expr

Une expression de tout type de données.

numeric_expr

Une expression numérique

date_or_time_expr

Une expression de type DATE, TIME ou TIMESTAMP.

binary_expr

Une expression de type BINARY ou VARBINARY.

Facultatif :

format

Le format de la chaîne de sortie :

Renvoie

Cette fonction renvoie une valeur de type de données VARCHAR ou NULL.

Notes sur l’utilisation

  • Pour les entrées VARIANT, ARRAY ou OBJECT, la sortie est la chaîne contenant un document JSON ou une valeur élémentaire JSON (à moins que VARIANT ou OBJECT contienne une balise XML, auquel cas le résultat est une chaîne contenant un document XML) :

    • Une chaîne stockée dans VARIANT est conservée telle quelle (c’est-à-dire qu’elle n’est pas convertie en une chaîne JSON).

    • Une valeur JSON null est convertie en une chaîne contenant le mot « null ».

Exemples

Les exemples suivants convertissent des nombres, des horodatages et des dates en chaînes.

Exemples de conversion de nombres

Convertissez des valeurs numériques en chaînes aux formats spécifiés :

CREATE OR REPLACE TABLE convert_numbers_to_strings(column1 NUMBER);

INSERT INTO convert_numbers_to_strings VALUES
  (-12.391),
  (0),
  (-1),
  (0.10),
  (0.01),
  (3987),
  (1.111);

SELECT column1 AS orig_value,
       TO_CHAR(column1, '">"$99.0"<"') AS D2_1,
       TO_CHAR(column1, '">"B9,999.0"<"') AS D4_1,
       TO_CHAR(column1, '">"TME"<"') AS TME,
       TO_CHAR(column1, '">"TM9"<"') AS TM9,
       TO_CHAR(column1, '">"0XXX"<"') AS X4,
       TO_CHAR(column1, '">"S0XXX"<"') AS SX4
  FROM convert_numbers_to_strings;
Copy
+------------+----------+------------+-------------+------------+--------+---------+
| ORIG_VALUE | D2_1     | D4_1       | TME         | TM9        | X4     | SX4     |
|------------+----------+------------+-------------+------------+--------+---------|
|    -12.391 | >-$12.4< | >   -12.4< | >-1.2391E1< | >-12.391<  | >FFF4< | >-000C< |
|      0.000 | >  $0.0< | >      .0< | >0E0<       | >0.000<    | >0000< | >+0000< |
|     -1.000 | > -$1.0< | >    -1.0< | >-1E0<      | >-1.000<   | >FFFF< | >-0001< |
|      0.100 | >  $0.1< | >      .1< | >1E-1<      | >0.100<    | >0000< | >+0000< |
|      0.010 | >  $0.0< | >      .0< | >1E-2<      | >0.010<    | >0000< | >+0000< |
|   3987.000 | > $##.#< | > 3,987.0< | >3.987E3<   | >3987.000< | >0F93< | >+0F93< |
|      1.111 | >  $1.1< | >     1.1< | >1.111E0<   | >1.111<    | >0001< | >+0001< |
+------------+----------+------------+-------------+------------+--------+---------+

La sortie illustre la façon dont les valeurs sont converties en chaînes en fonction des formats spécifiés :

  • Les symboles > et < sont des chaînes littérales qui sont incluses dans la sortie. Ils permettent de voir plus facilement les endroits où des espaces sont insérés.

  • La colonne D2_1 indique les valeurs avec un $ imprimé avant les chiffres.

    • Pour la valeur 3987, lorsqu’il existe plus de chiffres dans la partie entière du nombre que de positions de chiffre dans le format, tous les chiffres sont imprimés sous forme de # pour indiquer un dépassement.

    • Pour les valeurs 0.10, 0.01 et 1.111, il existe plus de chiffres dans la partie fractionnaire du nombre que de positions de chiffre dans le format, si bien que les valeurs fractionnaires sont tronquées.

  • La colonne D4_1 montre que les valeurs zéro sont représentées par des espaces dans les parties entières des nombres.

    • Pour les valeurs 0, 0.10 et 0.01, un espace remplace le zéro avant le séparateur.

    • Pour les valeurs 0.10, 0.01 et 1.111, il existe plus de chiffres dans la partie fractionnaire du nombre que de positions de chiffre dans le format, si bien que les valeurs fractionnaires sont tronquées.

  • La colonne TME indique les valeurs en notation scientifique.

  • La colonne TM9 affiche les valeurs sous forme d’entiers ou de fractions décimales en fonction de la valeur du nombre.

  • La colonne X4 affiche les valeurs sous forme de chiffres hexadécimaux sans les parties fractionnaires.

  • La colonne SX4 indique les valeurs sous forme de chiffres hexadécimaux de la valeur absolue des nombres et inclut le signe numérique (+ ou -).

Cet exemple convertit une valeur logarithmique en chaîne :

SELECT TO_VARCHAR(LOG(3,4));
Copy
+----------------------+
| TO_VARCHAR(LOG(3,4)) |
|----------------------|
| 1.261859507          |
+----------------------+

Exemples de conversion d’horodatages et de dates

Convertissez une valeur TIMESTAMP en chaîne au format spécifié :

SELECT TO_VARCHAR('2024-04-05 01:02:03'::TIMESTAMP, 'mm/dd/yyyy, hh24:mi hours');
Copy
+---------------------------------------------------------------------------+
| TO_VARCHAR('2024-04-05 01:02:03'::TIMESTAMP, 'MM/DD/YYYY, HH24:MI HOURS') |
|---------------------------------------------------------------------------|
| 04/05/2024, 01:02 hours                                                   |
+---------------------------------------------------------------------------+

Convertissez une valeur DATE en chaîne au format par défaut :

SELECT TO_VARCHAR('03-April-2024'::DATE);
Copy
+-----------------------------------+
| TO_VARCHAR('03-APRIL-2024'::DATE) |
|-----------------------------------|
| 2024-04-03                        |
+-----------------------------------+

Convertissez une valeur DATE en chaîne au format spécifié :

SELECT TO_VARCHAR('03-April-2024'::DATE, 'yyyy.mm.dd');
Copy
+-------------------------------------------------+
| TO_VARCHAR('03-APRIL-2024'::DATE, 'YYYY.MM.DD') |
|-------------------------------------------------|
| 2024.04.03                                      |
+-------------------------------------------------+