- Categorias:
Funções de dados semiestruturados e estruturados (Matriz/objeto)
OBJECT_CONSTRUCT_KEEP_NULL¶
Retorna um OBJECT construído a partir dos argumentos que retém pares chave-valor com valores NULL.
- Consulte também:
Sintaxe¶
OBJECT_CONSTRUCT_KEEP_NULL( [<key>, <value> [, <key>, <value> , ...]] )
OBJECT_CONSTRUCT_KEEP_NULL(*)
Argumentos¶
key
A chave em um par chave-valor. Cada chave é um valor VARCHAR.
value
O valor que está associado à chave. O valor pode ser qualquer tipo de dados.
*
Quando invocado com um asterisco (curinga), o valor de OBJECT é construído a partir dos dados especificados usando os nomes de atributo como chaves e os valores associados como valores. Consulte os exemplos abaixo.
Ao passar um curinga para a função, você pode qualificar o curinga com o nome ou alias da tabela. Por exemplo, para passar todas as colunas da tabela nomeadas
mytable
, especifique o seguinte:(mytable.*)
Também é possível usar as palavras-chave ILIKE e EXCLUDE para filtrar:
ILIKE filtra nomes de colunas que correspondem ao padrão especificado. Apenas um padrão é permitido. Por exemplo:
(* ILIKE 'col1%')
EXCLUDE filtra nomes de coluna que não correspondem à coluna ou colunas especificadas. Por exemplo:
(* EXCLUDE col1) (* EXCLUDE (col1, col2))
Os qualificadores são válidos quando você usa essas palavras-chave. O exemplo a seguir usa a palavra-chave ILIKE para filtrar todas as colunas que correspondem ao padrão
col1%
na tabelamytable
:(mytable.* ILIKE 'col1%')
As palavras-chave ILIKE e EXCLUDE não podem ser combinadas em uma única chamada de função.
Para esta função, as palavras-chave ILIKE e EXCLUDE são válidas somente em uma lista SELECT ou cláusula GROUP BY.
Para obter mais informações sobre as palavras-chave ILIKE e EXCLUDE, consulte a seção «Parâmetros» em SELECT.
Retornos¶
O tipo de dados do valor retornado é OBJECT.
Notas de uso¶
Se a chave for NULL (isto é, SQL NULL), o par chave-valor é omitido do objeto resultante. Entretanto, se o valor for NULL, o par chave-valor será mantido.
O objeto construído não preserva necessariamente a ordem original dos pares chave-valor.
Exemplos¶
Este exemplo mostra a diferença entre OBJECT_CONSTRUCT e OBJECT_CONSTRUCT_KEEP_NULL:
SELECT OBJECT_CONSTRUCT('key_1', 'one', 'key_2', NULL) AS WITHOUT_KEEP_NULL,
OBJECT_CONSTRUCT_KEEP_NULL('key_1', 'one', 'key_2', NULL) AS KEEP_NULL_1,
OBJECT_CONSTRUCT_KEEP_NULL('key_1', 'one', NULL, 'two') AS KEEP_NULL_2;
+-------------------+-------------------+------------------+
| WITHOUT_KEEP_NULL | KEEP_NULL_1 | KEEP_NULL_2 |
|-------------------+-------------------+------------------|
| { | { | { |
| "key_1": "one" | "key_1": "one", | "key_1": "one" |
| } | "key_2": null | } |
| | } | |
+-------------------+-------------------+------------------+
O exemplo seguinte também mostra a diferença entre OBJECT_CONSTRUCT e OBJECT_CONSTRUCT_KEEP NULL, mas este exemplo utiliza uma pequena tabela (que é mostrada antes da consulta):
CREATE TABLE demo_table_1_with_nulls (province VARCHAR, created_date DATE);
INSERT INTO demo_table_1_with_nulls (province, created_date) VALUES
('Manitoba', '2024-01-18'::DATE),
('British Columbia', NULL),
('Alberta', '2024-01-19'::DATE),
(NULL, '2024-01-20'::DATE);
SELECT *
FROM demo_table_1_with_nulls
ORDER BY province;
+------------------+--------------+
| PROVINCE | CREATED_DATE |
|------------------+--------------|
| Alberta | 2024-01-19 |
| British Columbia | NULL |
| Manitoba | 2024-01-18 |
| NULL | 2024-01-20 |
+------------------+--------------+
SELECT OBJECT_CONSTRUCT(*) AS oc,
OBJECT_CONSTRUCT_KEEP_NULL(*) AS oc_keep_null
FROM demo_table_1_with_nulls
ORDER BY oc_keep_null['PROVINCE'];
+----------------------------------+----------------------------------+
| OC | OC_KEEP_NULL |
|----------------------------------+----------------------------------|
| { | { |
| "CREATED_DATE": "2024-01-19", | "CREATED_DATE": "2024-01-19", |
| "PROVINCE": "Alberta" | "PROVINCE": "Alberta" |
| } | } |
| { | { |
| "PROVINCE": "British Columbia" | "CREATED_DATE": null, |
| } | "PROVINCE": "British Columbia" |
| | } |
| { | { |
| "CREATED_DATE": "2024-01-18", | "CREATED_DATE": "2024-01-18", |
| "PROVINCE": "Manitoba" | "PROVINCE": "Manitoba" |
| } | } |
| { | { |
| "CREATED_DATE": "2024-01-20" | "CREATED_DATE": "2024-01-20", |
| } | "PROVINCE": null |
| | } |
+----------------------------------+----------------------------------+
Para obter exemplos que utilizam a função estreitamente relacionada OBJECT_CONSTRUCT, consulte OBJECT_CONSTRUCT.