to_varchar-Funktion

Gilt für: Häkchen ja Databricks SQL Häkchen Databricks Runtime 11.3 LTS und höher

Gibt expr zurück, das in eine STRING umgewandelt wurde (mithilfe der Formatierung fmt).

In Databricks Runtime 14.0 und früher unterstützt to_varchar expr-Ausdrücke numerischer Typen.

In Databricks SQL und Databricks Runtime 14.1 und höher unterstützt to_varchar auch expr der Typen DATE, TIMESTAMP und BINARY

to_varchar ist ein Synonym für to_char.

Syntax

to_varchar(expr, { numericFormat | datetimeFormat | stringFormat } )

numericFormat
  { ' [ S ] [ L | $ ]
      [ 0 | 9 | G | , ] [...]
      [ . | D ]
      [ 0 | 9 ] [...]
      [ L | $ ] [ PR | MI | S ] ' }

Argumente

  • expr: ein Ausdruck eines der Typen „numerisch“, „datetime“, STRING oder BINARY.
  • numericFormat: ein STRING-Literal, das die formatierte Ausgabe für expr vom Typ „numerisch“ angibt.
  • datetimeFormat: ein STRING-Literal, das die formatierte Ausgabe für expr vom Typ „datetime“ angibt.
  • stringFormat: ein STRING-Literal, das die formatierte Ausgabe für expr vom Typ BINARY angibt.

Gibt zurück

Eine STRING, die das Ergebnis des Formatierungsvorgangs darstellt.

datetmeFormat kann die in Datetime-Mustern angegebenen Muster enthalten.

stringFormat kann eine der folgenden Zeichenfolgen sein (keine Unterscheidung zwischen Groß- und Kleinschreibung):

  • „base64“

    Eine Base64-Zeichenfolge.

  • „hex“

    Eine Zeichenfolge im Hexadezimalformat.

  • „utf-8“

    Die Eingabebinärdatei wird in eine UTF-8-Zeichenfolge decodiert.

numericFormat kann die folgenden Elemente enthalten (Groß-/Kleinschreibung wird nicht beachtet):

  • 0 oder 9

    Gibt eine erwartete Ziffer zwischen 0 und 9 an. Eine Sequenz von Ziffern mit Werten zwischen 0 und 9 in der Formatzeichenfolge entspricht einer Sequenz von Ziffern im Eingabewert. Dadurch wird eine Ergebniszeichenfolge derselben Länge wie die entsprechende Sequenz wie die Formatzeichenfolge generiert. Die Zeichenfolge des Ergebnisses wird links mit Nullen aufgefüllt, wenn die 0/9-Sequenz mehr Ziffern umfasst als der passende Teil des Dezimalwerts, mit 0 beginnt und vor dem Dezimalpunkt liegt. Andernfalls wird sie mit Leerzeichen aufgefüllt.

  • . oder D

    Gibt die Position des Dezimalpunkts an (optional, nur einmal erlaubt).

  • , oder G

    Gibt die Position des Tausendertrennzeichens (,) an. Es muss eine 0 oder 9 links oder rechts von jedem Gruppierungstrennzeichen vorhanden sein.

  • $

    Gibt die Position des $-Währungszeichens an. Dieses Zeichen darf nur einmal angegeben werden.

  • S oder MI

    Gibt die Position des Zeichens „-“ oder „+“ an (optional, nur einmal am Anfang oder Ende der Zeichenfolge zulässig). Beachten Sie, dass S für positive Werte + ausgibt, aber MI gibt ein Leerzeichen aus.

  • PR

    Nur am Ende der Zeichenfolge für das Format zulässig. Gibt an, dass die Ergebniszeichenfolge mit spitzen Klammern umschlossen wird, wenn der Eingabewert negativ ist. (‘<1>’).

Wenn numExpr mehr Ziffern erfordert, als fmt zulässt, gibt die Funktion fmt mit 0 und 9 ersetzt durch # zurück (z. B. '$###.##').

Wenn fmt nicht wohlgeformt ist, gibt Databricks SQL einen Fehler zurück.

Diese Funktion ist ein Alias für to_varchar.

Beispiele

> SELECT to_varchar(454, '999');
 454

> SELECT to_varchar(454, '000.00');
 454.00

> SELECT to_varchar(12454, '99,999');
 12,454

> SELECT to_varchar(78.12, '$99.99');
 $78.12

> SELECT to_varchar(-12454.8, '99,999.9S');
 12,454.8-

> SELECT to_varchar(12454.8, '99,999.9S');
 12,454.8+

> SELECT '>' || to_varchar(123, '00000.00') || '<';
 >00123.00<

> SELECT '>' || to_varchar(123, '99999.99') || '<';
 >  123.00<

> SELECT to_varchar(1.1, '99');
 ##

> SELECT to_varchar(111.11, '99.9');
 ##.#

> SELECT to_varchar(111.11, '$99.9');
 $##.#

> SELECT to_varchar(date'2016-04-08', 'y');
 2016

> SELECT to_varchar(x'537061726b2053514c', 'base64');
 U3BhcmsgU1FM

> SELECT to_varchar(x'537061726b2053514c', 'hex');
 537061726B2053514C

> SELECT to_varchar(encode('abc', 'utf-8'), 'utf-8');
 abc

> SELECT to_varchar(111, 'wrong');
 Error: 'wrong' is a malformed format.