- Kategorien:
TO_CHAR , TO_VARCHAR¶
Konvertiert den Eingabeausdruck in eine Zeichenfolge. Bei einer NULL-Eingabe lautet die Ausgabe NULL.
Diese Funktionen sind gleichbedeutend.
Syntax¶
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>' ] )
Argumente¶
Benötigt:
exprEin Ausdruck eines beliebigen Datentyps.
numeric_exprEin numerischer Ausdruck.
date_or_time_exprEin Ausdruck vom Typ DATE, TIME oder TIMESTAMP.
binary_exprEin Ausdruck vom Typ BINARY oder VARBINARY.
Optional:
formatDas Format der Ausgabezeichenfolge:
Gibt bei
numeric_exprdas SQL-Formatierungsmodell an, das zur Interpretation des numerischen Ausdrucks verwendet wird. Weitere Informationen finden Sie unter SQL-Formatmodelle.Gibt bei
date_or_time_exprdas erwartete Format zum Analysieren oder Erstellen einer Zeichenfolge an. Weitere Informationen finden Sie unter Datums- und Uhrzeitformate in Konvertierungsfunktionen.Der Standardwert ist der aktuelle Wert folgender Sitzungsparameter:
DATE_OUTPUT_FORMAT (bei DATE-Eingaben)
TIME_OUTPUT_FORMAT (bei TIME-Eingaben)
TIMESTAMP_OUTPUT_FORMAT (bei TIMESTAMP-Eingaben)
Gibt für den Binärausdruck
binary_exprdas Format an, in dem die Zeichenfolge erzeugt werden soll (z. B. HEX, BASE64 oder UTF-8).Weitere Informationen dazu finden Sie unter Übersicht der unterstützten Binärformate.
Rückgabewerte¶
Diese Funktion gibt einen Wert vom Datentyp VARCHAR oder NULL zurück.
Nutzungshinweise¶
Bei den Eingaben VARIANT, ARRAY oder OBJECT ist die Ausgabe die Zeichenfolge, die ein JSON-Dokument oder einen JSON-Elementarwert enthält (es sei denn, VARIANT oder OBJECT enthielten ein XML-Tag; in diesem Fall wäre die Ausgabe eine Zeichenfolge, die ein XML-Dokument enthält):
Eine in VARIANT gespeicherte Zeichenfolge bleibt erhalten (d. h. wird nicht in eine JSON-Zeichenfolge konvertiert).
Ein JSON null-Wert wird in eine Zeichenfolge konvertiert, die das Wort „null“ enthält.
Beispiele¶
Die folgenden Beispiele konvertieren Zahlen, Zeitstempel und Daten in Zeichenfolgen.
Beispiele für die Konvertierung von Zahlen¶
Konvertieren numerischer Werte in Zeichenfolgen der angegebenen Formate:
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< |
+------------+----------+------------+-------------+------------+--------+---------+
Die Ausgabe veranschaulicht, wie die Werte anhand der angegebenen Formate in Zeichenfolgen umgewandelt werden:
Die Symbole
>und<sind Zeichenfolgenliterale, die in der Ausgabe enthalten sind. Sie machen es einfacher zu sehen, wo Leerzeichen eingefügt wurden.Die Spalte
D2_1zeigt die Werte mit einem$vor den Ziffern.Beim Wert
3987gibt es mehr Ziffern im ganzzahligen Teil der Zahl als es Ziffernpositionen im Format gibt, daher werden alle Ziffern als#ausgegeben, um einen Überlauf anzuzeigen.Bei den Werten
0.10,0.01und1.111gibt es mehr Ziffern im Bruchteil der Zahl als Ziffernpositionen im Format, daher werden die Bruchwerte abgeschnitten.
Die Spalte
D4_1zeigt, dass Nullwerte in den ganzzahligen Teilen der Zahlen als Leerzeichen dargestellt werden.Bei den Werten
0,0.10und0.01ersetzt ein Leerzeichen die Null vor dem Trennzeichen.Bei den Werten
0.10,0.01und1.111gibt es mehr Ziffern im Bruchteil der Zahl als Ziffernpositionen im Format, daher werden die Bruchwerte abgeschnitten.
Die Spalte
TMEzeigt die Werte in wissenschaftlicher Notation an.Die Spalte
TM9zeigt die Werte als Ganzzahlen oder Dezimalbrüche an, je nach dem Wert der Zahl.Die Spalte
X4zeigt die Werte als Hexadezimalziffern ohne Nachkommastellen an.Die Spalte
SX4zeigt die Werte als hexadezimale Ziffern des absoluten Werts der Zahlen an und enthält das numerische Vorzeichen (+oder-).
Im folgenden Beispiel wird ein logarithmischer Wert in eine Zeichenfolge umgewandelt:
SELECT TO_VARCHAR(LOG(3,4));
+----------------------+
| TO_VARCHAR(LOG(3,4)) |
|----------------------|
| 1.261859507 |
+----------------------+
Beispiele für die Konvertierung von Zeitstempeln und Daten¶
Konvertieren eines TIMESTAMP-Werts in eine Zeichenfolge im angegebenen Format:
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 |
+---------------------------------------------------------------------------+
Konvertieren eines DATE-Werts in eine Zeichenfolge im Standardformat:
SELECT TO_VARCHAR('03-April-2024'::DATE);
+-----------------------------------+
| TO_VARCHAR('03-APRIL-2024'::DATE) |
|-----------------------------------|
| 2024-04-03 |
+-----------------------------------+
Konvertieren eines DATE-Werts in eine Zeichenfolge im angegebenen Format:
SELECT TO_VARCHAR('03-April-2024'::DATE, 'yyyy.mm.dd');
+-------------------------------------------------+
| TO_VARCHAR('03-APRIL-2024'::DATE, 'YYYY.MM.DD') |
|-------------------------------------------------|
| 2024.04.03 |
+-------------------------------------------------+