- Categorias:
Funções de dados semiestruturados e estruturados (Predicados de tipo)
TYPEOF¶
Retorna o tipo de um valor armazenado em uma coluna VARIANT.
- Consulte também:
Sintaxe¶
TYPEOF( <expr> )
Argumentos¶
expr
O argumento pode ser um nome de coluna ou uma expressão geral do tipo VARIANT. Se necessário, você pode transmitir o
expr
para um VARIANT.
Retornos¶
Retorna um valor VARCHAR que contém o tipo de dados da expressão de entrada, como BOOLEAN, DECIMAL, ARRAY, OBJECT e assim por diante.
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.
Essa função não é compatível com um tipo estruturado como argumento de entrada.
Exemplos¶
Criação e preenchimento da tabela vartab
. A instrução INSERT usa a função PARSE_JSON para inserir valores VARIANT na coluna v
da tabela.
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;
Consultar os dados. A consulta usa a função TYPEOF para mostrar os tipos de dados dos valores armazenados na coluna VARIANT.
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 | |
| | } | |
+---+------------------------+------------+
O exemplo a seguir usa a função TYPEOF para determinar o tipo de dados de um valor transformando o valor em um VARIANT.
Crie e preencha uma tabela.
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');
Consulte a tabela usando a função TYPEOF convertendo cada valor em VARIANT:
SELECT status,
TYPEOF(status::VARIANT) AS "TYPE OF STATUS",
time,
TYPEOF(time::VARIANT) AS "TYPE OF TIME"
FROM typeof_cast;
+----------+----------------+-------------------------+---------------+
| STATUS | TYPE OF STATUS | TIME | TYPE OF TIME |
|----------+----------------+-------------------------+---------------|
| check in | VARCHAR | 2024-01-17 19:00:00.000 | TIMESTAMP_NTZ |
+----------+----------------+-------------------------+---------------+