Kategorien:

Funktionen für semistrukturierte und strukturierte Daten (Array/Objekt)

OBJECT_DELETE

Gibt ein Objekt zurück, das den Inhalt des Eingabe-Objekts (d. h. des Quellobjekts) enthält, wobei ein oder mehrere Schlüssel entfernt werden.

Syntax

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

Argumente

object

Das Quellobjekt.

key1, key2

Schlüssel, der aus dem zurückgegebenen Objekt weggelassen werden soll.

Nutzungshinweise

Bei strukturierten OBJECTs:

  • Für die Argumente, die Schlüssel sind, müssen Sie Konstanten angeben.

  • Wenn der angegebene Schlüssel nicht Teil der OBJECT-Typdefinition ist, schlägt der Aufruf fehl. Der folgende Aufruf schlägt zum Beispiel fehl, weil OBJECT nicht den angegebenen Schlüssel zip_code enthält:

    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.
    
  • Die Funktion gibt ein strukturiertes OBJECT zurück. Der Typ des OBJECT schließt den gelöschten Schlüssel aus. Angenommen, Sie entfernen den Schlüssel city:

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

    Die Funktion gibt ein OBJECT vom Typ OBJECT(state VARCHAR) zurück, das den Schlüssel city nicht enthält.

    +-----------------+--------------------------------------+
    | NEW_OBJECT      | SYSTEM$TYPEOF(NEW_OBJECT)            |
    |-----------------+--------------------------------------|
    | {               | OBJECT(state VARCHAR(16777216))[LOB] |
    |   "state": "CA" |                                      |
    | }               |                                      |
    +-----------------+--------------------------------------+
    
  • Wenn die Funktion alle Schlüssel aus dem Objekt entfernt, gibt die Funktion ein leeres strukturiertes OBJECT vom Typ OBJECT() zurück.

    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]             |
    +------------+---------------------------+
    

    Wenn der Typ eines strukturierten OBJECT Schlüssel-Wert-Paare enthält, werden die Namen und Typen dieser Paare in Klammern in den Typ aufgenommen (zum Beispiel OBJECT(Stadt VARCHAR)). Da ein leeres strukturiertes OBJECT keine Schlüssel-Wert-Paare enthält, sind die Klammern leer.

Beispiele

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