- 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:
expr
Ein Ausdruck eines beliebigen Datentyps.
numeric_expr
Ein numerischer Ausdruck.
date_or_time_expr
Ein Ausdruck vom Typ DATE, TIME oder TIMESTAMP.
binary_expr
Ein Ausdruck vom Typ BINARY oder VARBINARY.
Optional:
format
Das Format der Ausgabezeichenfolge:
Gibt bei
numeric_expr
das SQL-Formatierungsmodell an, das zur Interpretation des numerischen Ausdrucks verwendet wird. Weitere Informationen finden Sie unter SQL-Formatmodelle.Gibt bei
date_or_time_expr
das 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_expr
das 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_1
zeigt die Werte mit einem$
vor den Ziffern.Beim Wert
3987
gibt 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.01
und1.111
gibt es mehr Ziffern im Bruchteil der Zahl als Ziffernpositionen im Format, daher werden die Bruchwerte abgeschnitten.
Die Spalte
D4_1
zeigt, dass Nullwerte in den ganzzahligen Teilen der Zahlen als Leerzeichen dargestellt werden.Bei den Werten
0
,0.10
und0.01
ersetzt ein Leerzeichen die Null vor dem Trennzeichen.Bei den Werten
0.10
,0.01
und1.111
gibt es mehr Ziffern im Bruchteil der Zahl als Ziffernpositionen im Format, daher werden die Bruchwerte abgeschnitten.
Die Spalte
TME
zeigt die Werte in wissenschaftlicher Notation an.Die Spalte
TM9
zeigt die Werte als Ganzzahlen oder Dezimalbrüche an, je nach dem Wert der Zahl.Die Spalte
X4
zeigt die Werte als Hexadezimalziffern ohne Nachkommastellen an.Die Spalte
SX4
zeigt 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 |
+-------------------------------------------------+