- Catégories :
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>' ] )
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 :
Pour
numeric_expr
, spécifie le modèle de format SQL utilisé pour interpréter l’expression numérique. Pour plus d’informations, voir Modèles de format SQL.Pour
date_or_time_expr
, spécifie le format attendu pour l’analyse ou la production d’une chaîne. Pour plus d’informations, voir Formats de date et d’heure dans les fonctions de conversion.La valeur par défaut est la valeur actuelle des paramètres de session suivants :
DATE_OUTPUT_FORMAT (pour les entrées DATE)
TIME_OUTPUT_FORMAT (pour les entrées TIME)
TIMESTAMP_OUTPUT_FORMAT (pour les entrées TIMESTAMP)
Pour
binary_expr
, spécifie le format dans lequel produire la chaîne, (par exemple “HEX”, “BASE64” ou “UTF-8”).Pour plus d’informations, voir Présentation des formats binaires pris en charge.
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;
+------------+----------+------------+-------------+------------+--------+---------+
| 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
et1.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
et0.01
, un espace remplace le zéro avant le séparateur.Pour les valeurs
0.10
,0.01
et1.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));
+----------------------+
| 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');
+---------------------------------------------------------------------------+
| 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);
+-----------------------------------+
| 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');
+-------------------------------------------------+
| TO_VARCHAR('03-APRIL-2024'::DATE, 'YYYY.MM.DD') |
|-------------------------------------------------|
| 2024.04.03 |
+-------------------------------------------------+