Categorias:

Funções de dados semiestruturados e estruturados (Predicados de tipo)

TYPEOF

Relata o tipo de um valor armazenado em uma coluna de VARIANT. O tipo é retornado como cadeia de caracteres.

Consulte também:

IS_<tipo_de_objeto> , SYSTEM$TYPEOF

Sintaxe

TYPEOF( <expr> )
Copy

Argumentos

expr

O argumento pode ser um nome de coluna ou uma expressão geral.

Retornos

Retorna um VARCHAR que contém o tipo de dados da expressão de entrada, por exemplo, BOOLEAN, DECIMAL, ARRAY, OBJECT etc.

Notas de uso

  • A cadeia de caracteres retornada pode ser DECIMAL mesmo que a entrada seja um número inteiro exato, devido a otimizações que alteram o tipo de armazenamento físico da entrada.

  • Esta função não oferece suporte a um tipo estruturado como argumento de entrada.

Exemplos

Criar uma tabela que contenha diferentes tipos de dados armazenados dentro de uma coluna VARIANT, depois usar TYPEOF para determinar os tipos de dados de cada parte de dado.

Criar e preencher uma tabela. Observe que a instrução INSERT usa a função PARSE_JSON.

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

Consultar os dados:

select n, v, typeof(v)
    from vartab
    order by n;
+---+------------------------+------------+
| 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              |            |
|   | }                      |            |
+---+------------------------+------------+
Copy