Categorias:

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

OBJECT_DELETE

Retorna um objeto com o conteúdo do objeto de entrada (ou seja, de origem) com uma ou mais chaves removidas.

Sintaxe

OBJECT_DELETE( <object>, <key1> [, <key2>, ... ] )
Copy

Argumentos

object

O objeto de origem.

key1, key2

Chave a ser omitida do objeto retornado.

Notas de uso

Para OBJECTs estruturados:

  • Para os argumentos que são chaves, você deve especificar constantes.

  • Se a chave especificada não fizer parte da definição do tipo OBJECT, a chamada falhará. Por exemplo, a chamada a seguir falha porque OBJECT não contém a chave especificada zip_code:

    SELECT OBJECT_DELETE( {'city':'San Mateo','state':'CA'}::OBJECT(city VARCHAR,state VARCHAR), 'zip_code' );
    
    Copy
    093201 (23001): Function OBJECT_DELETE: expected structured object to contain field zip_code but it did not.
    
  • A função retorna um OBJECT estruturado. O tipo de OBJECT exclui a chave excluída. Por exemplo, suponha que você remova a chave city:

    SELECT
      OBJECT_DELETE(
        {'city':'San Mateo','state':'CA'}::OBJECT(city VARCHAR,state VARCHAR),
        'city'
      ) AS new_object,
      SYSTEM$TYPE_OF(new_object);
    
    Copy

    A função retorna um OBJECT do tipo OBJECT(state VARCHAR), que não inclui a chave city.

    +-----------------+--------------------------------------+
    | NEW_OBJECT      | SYSTEM$TYPEOF(NEW_OBJECT)            |
    |-----------------+--------------------------------------|
    | {               | OBJECT(state VARCHAR(16777216))[LOB] |
    |   "state": "CA" |                                      |
    | }               |                                      |
    +-----------------+--------------------------------------+
    
  • Se a função remover todas as chaves do objeto, a função retornará um OBJECT estruturado vazio do tipo OBJECT().

    SELECT
      OBJECT_DELETE(
        {'state':'CA'}::OBJECT(state VARCHAR),
        'state'
      ) AS new_object,
      SYSTEM$TYPEOF(new_object);
    
    Copy
    +------------+---------------------------+
    | NEW_OBJECT | SYSTEM$TYPEOF(NEW_OBJECT) |
    |------------+---------------------------|
    | {}         | OBJECT()[LOB]             |
    +------------+---------------------------+
    

    Quando o tipo de um OBJECT estruturado inclui pares chave-valor, os nomes e tipos desses pares são incluídos entre parênteses no tipo (por exemplo, OBJECT(cidade VARCHAR)). Como um OBJECT estruturado vazio não contém pares chave-valor, os parênteses estão vazios.

Exemplos

SELECT OBJECT_DELETE(OBJECT_CONSTRUCT('a', 1, 'b', 2, 'c', 3), 'a', 'b');

-------------------------------------------------------------------+
 OBJECT_DELETE(OBJECT_CONSTRUCT('A', 1, 'B', 2, 'C', 3), 'A', 'B') |
-------------------------------------------------------------------+
 {                                                                 |
   "c": 3                                                          |
 }                                                                 |
-------------------------------------------------------------------+
Copy