Categorias:

Funções de dados semiestruturados e estruturados (Matriz/objeto)

OBJECT_CONSTRUCT_KEEP_NULL

Devolve um OBJECT construído a partir dos argumentos.

Consulte também:

OBJECT_CONSTRUCT

Sintaxe

OBJECT_CONSTRUCT_KEEP_NULL( [<key1>, <value1> [, <keyN>, <valueN> ...]] )

OBJECT_CONSTRUCT_KEEP_NULL( * )
Copy

Retornos

O tipo de dados do valor retornado é OBJECT.

Notas de uso

  • A função aceita qualquer um dos dois:

    • Uma sequência de zero ou mais pares chave-valor (onde as chaves são cadeias de caracteres e os valores são de qualquer tipo).

    • Um asterisco.

    Quando invocado com um asterisco, o objeto é construído usando os nomes dos atributos como chaves e os valores de tupla associados como valores. Consulte os exemplos abaixo.

  • Se a chave for NULL (isto é, SQL NULL), o par chave-valor é omitido do objeto resultante. Entretanto, se o valor for nulo, então o par chave-valor é 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   | }                |
|                   | }                 |                  |
+-------------------+-------------------+------------------+
Copy

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):

SELECT *
    FROM demo_table_1
    ORDER BY province;
+------------------+--------------+
| PROVINCE         | CREATED_DATE |
|------------------+--------------|
| Alberta          | 2020-01-19   |
| British Columbia | NULL         |
| Manitoba         | 2020-01-18   |
| NULL             | 2020-01-20   |
+------------------+--------------+
Copy
SELECT OBJECT_CONSTRUCT(*) AS oc,
       OBJECT_CONSTRUCT_KEEP_NULL(*) AS oc_keep_null
    FROM demo_table_1
    ORDER BY oc_keep_null['PROVINCE'];
+----------------------------------+----------------------------------+
| OC                               | OC_KEEP_NULL                     |
|----------------------------------+----------------------------------|
| {                                | {                                |
|   "CREATED_DATE": "2020-01-19",  |   "CREATED_DATE": "2020-01-19",  |
|   "PROVINCE": "Alberta"          |   "PROVINCE": "Alberta"          |
| }                                | }                                |
| {                                | {                                |
|   "PROVINCE": "British Columbia" |   "CREATED_DATE": null,          |
| }                                |   "PROVINCE": "British Columbia" |
|                                  | }                                |
| {                                | {                                |
|   "CREATED_DATE": "2020-01-18",  |   "CREATED_DATE": "2020-01-18",  |
|   "PROVINCE": "Manitoba"         |   "PROVINCE": "Manitoba"         |
| }                                | }                                |
| {                                | {                                |
|   "CREATED_DATE": "2020-01-20"   |   "CREATED_DATE": "2020-01-20",  |
| }                                |   "PROVINCE": null               |
|                                  | }                                |
+----------------------------------+----------------------------------+
Copy

Para obter exemplos que utilizam a função estreitamente relacionada OBJECT_CONSTRUCT, consulte OBJECT_CONSTRUCT.