Kategorien:

Konvertierungsfunktionen

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>' ] )
Copy

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:

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

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 und 1.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 und 0.01 ersetzt ein Leerzeichen die Null vor dem Trennzeichen.

    • Bei den Werten 0.10, 0.01 und 1.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));
Copy
+----------------------+
| 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');
Copy
+---------------------------------------------------------------------------+
| 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);
Copy
+-----------------------------------+
| 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');
Copy
+-------------------------------------------------+
| TO_VARCHAR('03-APRIL-2024'::DATE, 'YYYY.MM.DD') |
|-------------------------------------------------|
| 2024.04.03                                      |
+-------------------------------------------------+