Umrechnungsfunktionen

Cloud Spanner SQL unterstützt die folgenden Konvertierungsfunktionen. Diese Datentyp-Konversionen sind explizit. Einige Konversionen können jedoch implizit erfolgen. Weitere Informationen zur impliziten und expliziten Konversionen finden Sie hier.

CAST-Übersicht

CAST(expression AS typename)

Beschreibung

Die Umwandlungssyntax wird in einer Abfrage verwendet, um anzuzeigen, dass der Ergebnistyp eines Ausdrucks in einen anderen Typ umgewandelt werden soll.

Bei Verwendung von CAST kann eine Abfrage fehlschlagen, wenn Cloud Spanner SQL die Umwandlung nicht durchführen kann. Wenn Sie Ihre Abfragen vor diesen Fehlern schützen möchten, können Sie SAFE_CAST verwenden.

Umwandlungen von unterstützten Typen, die vom Originalwert nicht erfolgreich der Zieldomain zugeordnet werden können, erzeugen Laufzeitfehler. Zum Beispiel führt das Umwandeln von BYTES in STRING bei nicht gültiger UTF-8-Codierung der Bytesequenz zu einem Laufzeitfehler.

Beispiele

Die folgende Abfrage führt zu "true", wenn x gleich 1 ist, "false" für jeden anderen Nicht-NULL-Wert und NULL, wenn x gleich NULL ist.

CAST(x=1 AS STRING)

ALS ARRAY UMWANDELN

CAST(expression AS ARRAY<element_type>)

Beschreibung

Cloud Spanner SQL unterstützt das Übertragen in ARRAY. Der Parameter expression kann einen Ausdruck für diese Datentypen darstellen:

  • ARRAY

Konversionsregeln

Von Zu Regel(n) beim Umwandeln von x
ARRAY ARRAY Muss exakt derselbe ARRAY-Typ sein.

ALS BOOL UMWANDELN

CAST(expression AS BOOL)

Beschreibung

Cloud Spanner SQL unterstützt das Streamen von BOOL. Der Parameter expression kann einen Ausdruck für diese Datentypen darstellen:

  • INT64
  • BOOL
  • STRING

Konversionsregeln

Von Zu Regel(n) beim Umwandeln von x
INT64 BOOL Gibt FALSE zurück, wenn x gleich 0 ist, ansonsten TRUE.
STRING BOOL Gibt TRUE zurück, wenn x gleich "true" ist, und FALSE, wenn x gleich "false" ist.
Alle anderen Werte von x sind ungültig und erzeugen einen Fehler, statt in BOOL umgewandelt zu werden.
Bei STRING-Werten wird bei der Umwandlung in BOOL die Groß-/Kleinschreibung nicht berücksichtigt.

ALS BYTES UMWANDELN

CAST(expression AS BYTES)

Beschreibung

Cloud Spanner SQL unterstützt das Übertragen in BYTES. Der Parameter expression kann einen Ausdruck für diese Datentypen darstellen:

  • BYTES
  • STRING

Konversionsregeln

Von Zu Regel(n) beim Umwandeln von x
STRING BYTES STRINGs werden mithilfe der UTF-8-Codierung in BYTES umgewandelt. Der STRING „©“ wird beispielsweise bei der Umwandlung in BYTES eine 2-Byte-Sequenz mit den Hex-Werten C2 und A9.

ALS DATUM UMWANDELN

CAST(expression AS DATE)

Beschreibung

Cloud Spanner SQL unterstützt das Übertragen in DATE. Der Parameter expression kann einen Ausdruck für diese Datentypen darstellen:

  • STRING
  • TIMESTAMP

Konversionsregeln

Von Zu Regel(n) beim Umwandeln von x
STRING DATE Bei der Umwandlung eines Strings in ein Datum muss der String dem unterstützten Datumsliteralformat entsprechen und ist von der Zeitzone unabhängig. Wenn der Stringausdruck ungültig ist oder ein Datum darstellt, das außerhalb des unterstützten Mindest-/Maximalbereichs liegt, wird ein Fehler erzeugt.
TIMESTAMP DATE Beim Umwandeln eines Zeitstempels in ein Datum wird der Zeitstempel gemäß der Standardzeitzone effektiv gekürzt.

ALS FLOAT64 UMWANDELN

CAST(expression AS FLOAT64)

Beschreibung

Cloud Spanner SQL unterstützt das Streamen in Gleitkommatypen. Der Parameter expression kann einen Ausdruck für diese Datentypen darstellen:

  • INT64
  • FLOAT64
  • NUMERIC
  • STRING

Konversionsregeln

Von Zu Regel(n) beim Umwandeln von x
INT64 FLOAT64 Gibt einen annähernden, aber möglicherweise keinen exakten Gleitkommawert zurück.
NUMERIC FLOAT64 NUMERIC wird in die nächste Gleitkommazahl konvertiert, was mit einem Genauigkeitsverlust verbunden sein kann.
STRING FLOAT64 Gibt x als Gleitkommawert zurück und interpretiert ihn so, als hätte er die gleiche Form wie ein gültiges Gleitkommaliteral. Unterstützt auch Umwandlungen von "[+,-]inf" zu [,-]Infinity, "[+,-]infinity" zu [,-]Infinity und von "[+,-]nan" zu NaN. Bei der Konversion wird die Groß-/Kleinschreibung nicht beachtet.

ALS INT64 UMWANDELN

CAST(expression AS INT64)

Beschreibung

Cloud Spanner SQL unterstützt das Übertragen in Ganzzahltypen. Der Parameter expression kann einen Ausdruck für diese Datentypen darstellen:

  • INT64
  • FLOAT64
  • NUMERIC
  • BOOL
  • STRING

Konversionsregeln

Von Zu Regel(n) beim Umwandeln von x
FLOAT64 INT64 Gibt den nächstgelegenen ganzzahligen Wert zurück.
Halbe Zahlen wie 1,5 oder -0,5 runden von 0 weg.
BOOL INT64 Gibt 1 zurück, wenn x gleich TRUE ist, ansonsten 0.
STRING INT64 Ein Hexadezimalstring kann in eine Ganzzahl umgewandelt werden. Beispiel: 0x123 zu 291 oder -0x123 zu -291.

Beispiele

Wenn Sie mit Hex-Strings (0x123) arbeiten, können Sie diese in Ganzzahlen umwandeln:

SELECT '0x123' as hex_value, CAST('0x123' as INT64) as hex_to_int;

+-----------+------------+
| hex_value | hex_to_int |
+-----------+------------+
| 0x123     | 291        |
+-----------+------------+
SELECT '-0x123' as hex_value, CAST('-0x123' as INT64) as hex_to_int;

+-----------+------------+
| hex_value | hex_to_int |
+-----------+------------+
| -0x123    | -291       |
+-----------+------------+

ALS NUMERIC UMWANDELN

CAST(expression AS NUMERIC)

Beschreibung

Cloud Spanner SQL unterstützt casting zu NUMERIC. Der Parameter expression kann einen Ausdruck für diese Datentypen darstellen:

  • INT64
  • FLOAT64
  • NUMERIC
  • STRING

Konversionsregeln

Von Zu Regel(n) beim Umwandeln von x
FLOAT64 NUMERIC Die Gleitkommazahl wird kaufmännisch gerundet. Beim Umwandeln von NaN, +inf oder -inf wird ein Fehler zurückgegeben. Beim Umwandeln eines Werts außerhalb des Bereichs NUMERIC wird ein Überlauffehler zurückgegeben.
STRING NUMERIC Das in STRING enthaltene numerische Literal darf die maximale Genauigkeit oder den maximalen Bereich des Typs NUMERIC nicht überschreiten. Andernfalls tritt ein Fehler auf. Wenn die Anzahl der Nachkommastellen größer als neun ist, wird der resultierende NUMERIC-Wert kaufmännisch gerundet, sodass neun Nachkommastellen übrig bleiben.

ALS STRING UMWANDELN

CAST(expression AS STRING)

Beschreibung

Cloud Spanner SQL unterstützt das Übertragen in STRING. Der Parameter expression kann einen Ausdruck für diese Datentypen darstellen:

  • INT64
  • FLOAT64
  • NUMERIC
  • BOOL
  • BYTES
  • DATE
  • TIMESTAMP
  • STRING

Konversionsregeln

Von Zu Regel(n) beim Umwandeln von x
FLOAT64 STRING Gibt eine ungefähre Stringdarstellung zurück.
BOOL STRING Gibt "true" zurück, wenn x gleich TRUE ist, ansonsten "false".
BYTES STRING Gibt x als UTF-8-STRING interpretiert zurück.
Beispiel: Das BYTES-Literal b'\xc2\xa9' wird beim Umwandeln in STRING als UTF-8 interpretiert und zum Unicode-Zeichen „©“ konvertiert.
Falls x keine gültige UTF-8-Codierung ist, tritt ein Fehler auf.
DATE STRING Die Umwandlung von einem Datumstyp in einen String ist unabhängig von der Zeitzone und erfolgt in der Form YYYY-MM-DD.
TIMESTAMP STRING Beim Umwandeln von Zeitstempeltypen in Strings wird der Zeitstempel mit der Standardzeitzone "America/Los_Angeles" interpretiert. Wie viele Stellen für Sekundenbruchteile generiert werden, hängt von der Anzahl der angehängten Nullen im Sekundenbruchteilbereich ab. Die Funktion CAST schneidet null, drei oder sechs Stellen ab.

Beispiele

SELECT CAST(CURRENT_DATE() AS STRING) AS current_date

+---------------+
| current_date  |
+---------------+
| 2021-03-09    |
+---------------+

ALS STRUCT UMWANDELN

CAST(expression AS STRUCT)

Beschreibung

Cloud Spanner SQL unterstützt casting zu STRUCT. Der Parameter expression kann einen Ausdruck für diese Datentypen darstellen:

  • STRUCT

Konversionsregeln

Von Zu Regel(n) beim Umwandeln von x
STRUCT STRUCT Zulässig, wenn folgende Bedingungen erfüllt sind:
  1. Die beiden STRUCTs haben dieselbe Feldanzahl.
  2. Die ursprünglichen STRUCT-Feldtypen können explizit in die entsprechenden Ziel-STRUCT-Feldtypen (wie nach Feldreihenfolge, nicht nach Feldname definiert) umgewandelt werden.

ALS TIMESTAMP UMWANDELN

CAST(expression AS TIMESTAMP)

Beschreibung

Cloud Spanner SQL unterstützt das Übertragen in TIMESTAMP. Der Parameter expression kann einen Ausdruck für diese Datentypen darstellen:

  • STRING
  • TIMESTAMP

Konversionsregeln

Von Zu Regel(n) beim Umwandeln von x
STRING TIMESTAMP Beim Umwandeln von Strings in Zeitstempel muss string_expression den unterstützten Zeitstempel-Literalformaten entsprechen. Ansonsten tritt ein Laufzeitfehler auf. string_expression kann selbst eine Zeitzone enthalten.
Wenn in string_expression eine Zeitzone vorhanden ist, wird diese Zeitzone für die Konversion verwendet, andernfalls gilt die Standardzeitzone "America/Los_Angeles". Wenn der String weniger als sechs Ziffern hat, dann wird er implizit erweitert.
Wenn string_expression ungültig ist, mehr als sechs Stellen im Sekundenbruchteilbereich (also eine höhere Genauigkeit als Mikrosekunden) hat oder eine Zeit außerhalb des unterstützten Zeitstempelbereichs darstellt, wird ein Fehler zurückgegeben.
DATE TIMESTAMP Bei der Umwandlung eines Datums in einen Zeitstempel wird als Uhrzeit für date_expression Mitternacht (Tagesbeginn) in der Standardzeitzone "America/Los_Angeles" verwendet.

Beispiele

Das folgende Beispiel wandelt einen String-formatierten Zeitstempel in einen Zeitstempel um:

SELECT CAST("2020-06-02 17:00:53.110+00:00" AS TIMESTAMP) AS as_timestamp

-- Results depend upon where this query was executed.
+-------------------------+
| as_timestamp            |
+-------------------------+
| 2020-06-03T00:00:53.11Z |
+-------------------------+

SAFE_CAST

SAFE_CAST(expression AS typename)

Beschreibung

Bei Verwendung von CAST kann eine Abfrage fehlschlagen, wenn Cloud Spanner SQL die Umwandlung nicht durchführen kann. Die folgende Abfrage erzeugt beispielsweise einen Fehler:

SELECT CAST("apple" AS INT64) AS not_a_number;

Wenn Sie Ihre Abfragen vor diesen Fehlern schützen möchten, können Sie SAFE_CAST verwenden. SAFE_CAST ist mit CAST identisch, allerdings wird NULL zurückgegeben und kein Fehler ausgelöst.

SELECT SAFE_CAST("apple" AS INT64) AS not_a_number;

+--------------+
| not_a_number |
+--------------+
| NULL         |
+--------------+

Zum Umwandeln von Byte in Strings können Sie auch die Funktion SAFE_CONVERT_BYTES_TO_STRING verwenden. Alle ungültigen UTF-8-Zeichen werden durch das Unicode-Ersatzzeichen U+FFFD ersetzt. Weitere Informationen finden Sie unter SAFE_CONVERT_BYTES_TO_STRING.

Weitere Konversionsfunktionen

Weitere Informationen zu diesen Konversionsfunktionen finden Sie an anderer Stelle in der Dokumentation:

Konversionsfunktionen Von To
ARRAY_TO_STRING ARRAY STRING
DATE Verschiedene Datentypen DATE
FROM_BASE32 STRING BYTEs
FROM_BASE64 STRING BYTES
FROM_HEX STRING BYTES
PARSE_DATE STRING DATE
PARSE_TIMESTAMP STRING TIMESTAMP
SAFE_CONVERT_BYTES_TO_STRING BYTES STRING
STRING TIMESTAMP STRING
TIMESTAMP Verschiedene Datentypen TIMESTAMP
TO_BASE32 BYTES STRING
TO_BASE64 BYTES STRING
TO_HEX BYTES STRING