Kategorien:

Funktionen für semistrukturierte und strukturierte Daten (Typprädikate)

TYPEOF

Gibt den Typ eines Wertes zurück, der in einer VARIANT-Spalte gespeichert ist.

Siehe auch:

IS_<Objekttyp>, SYSTEM$TYPEOF

Syntax

TYPEOF( <expr> )
Copy

Argumente

expr

Das Argument kann ein Spaltenname oder ein allgemeiner Ausdruck vom Typ VARIANT sein. Falls erforderlich, können Sie den expr-Wert in einen VARIANT-Wert umwandeln.

Rückgabewerte

Gibt einen VARCHAR-Wert zurück, der den Datentyp des eingegebenen Ausdrucks enthält, z. B. BOOLEAN, DECIMAL, ARRAY, OBJECT usw.

Nutzungshinweise

  • Die zurückgegebene Zeichenfolge kann DECIMAL sein, auch wenn die Eingabe eine exakte Ganzzahl ist. Dies ist auf Optimierungen zurückzuführen, die den physischen Speichertyp der Eingabe ändern.

Beispiele

Erstellen und füllen Sie die Tabelle vartab. Die INSERT-Anweisung verwendet die Funktion PARSE_JSON, um VARIANT-Werte in die Spalte v der Tabelle einzufügen.

CREATE OR REPLACE TABLE vartab (n NUMBER(2), v VARIANT);

INSERT INTO vartab
  SELECT column1 AS n, PARSE_JSON(column2) AS v
    FROM VALUES (1, 'null'), 
                (2, null), 
                (3, 'true'),
                (4, '-17'), 
                (5, '123.12'), 
                (6, '1.912e2'),
                (7, '"Om ara pa ca na dhih"  '), 
                (8, '[-1, 12, 289, 2188, false,]'), 
                (9, '{ "x" : "abc", "y" : false, "z": 10} ') 
       AS vals;
Copy

Abfragen auf den Daten ausführen Die Abfrage verwendet die Funktion TYPEOF, um die Datentypen der in der VARIANT-Spalte gespeicherten Werte anzuzeigen.

SELECT n, v, TYPEOF(v)
  FROM vartab
  ORDER BY n;
Copy
+---+------------------------+------------+
| N | V                      | TYPEOF(V)  |
|---+------------------------+------------|
| 1 | null                   | NULL_VALUE |
| 2 | NULL                   | NULL       |
| 3 | true                   | BOOLEAN    |
| 4 | -17                    | INTEGER    |
| 5 | 123.12                 | DECIMAL    |
| 6 | 1.912000000000000e+02  | DOUBLE     |
| 7 | "Om ara pa ca na dhih" | VARCHAR    |
| 8 | [                      | ARRAY      |
|   |   -1,                  |            |
|   |   12,                  |            |
|   |   289,                 |            |
|   |   2188,                |            |
|   |   false,               |            |
|   |   undefined            |            |
|   | ]                      |            |
| 9 | {                      | OBJECT     |
|   |   "x": "abc",          |            |
|   |   "y": false,          |            |
|   |   "z": 10              |            |
|   | }                      |            |
+---+------------------------+------------+

Im folgenden Beispiel wird die TYPEOF-Funktion verwendet, um den Datentyp eines Wertes zu bestimmen, indem der Wert in einen VARIANT-Wert umgewandelt wird.

Erstellen Sie eine Tabelle, und füllen Sie diese mit Werten:

CREATE OR REPLACE TABLE typeof_cast(status VARCHAR, time TIMESTAMP);

INSERT INTO typeof_cast VALUES('check in', '2024-01-17 19:00:00.000 -0800');
Copy

Fragen Sie die Tabelle mit der TYPEOF-Funktion ab, indem Sie jeden Wert in einen VARIANT-Wert umwandeln:

SELECT status,
       TYPEOF(status::VARIANT) AS "TYPE OF STATUS",
       time,
       TYPEOF(time::VARIANT) AS "TYPE OF TIME"
  FROM typeof_cast;
Copy
+----------+----------------+-------------------------+---------------+
| STATUS   | TYPE OF STATUS | TIME                    | TYPE OF TIME  |
|----------+----------------+-------------------------+---------------|
| check in | VARCHAR        | 2024-01-17 19:00:00.000 | TIMESTAMP_NTZ |
+----------+----------------+-------------------------+---------------+