カテゴリ:

半構造化データ関数と構造化データ関数 (配列/オブジェクト)

OBJECT_DELETE

1つ以上のキーが削除された入力(ソース)オブジェクトのコンテンツを含むオブジェクトを返します。

構文

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

引数

object

ソースオブジェクトです。

key1key2

返されるオブジェクトから省略されるキーです。

使用上の注意

構造化 OBJECTs の場合:

  • キーとなる引数には、定数を指定する必要があります。

  • 指定されたキーが OBJECT 型定義の一部でない場合、呼び出しは失敗します。例えば、次の呼び出しは OBJECT に指定されたキー 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.
    
  • この関数は構造化 OBJECT を返します。OBJECT の型は削除されたキーを除外します。例えば、 city キーを削除するとします。

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

    この関数は、 city キーを含まない OBJECT(state VARCHAR) 型の OBJECT を返します。

    +-----------------+--------------------------------------+
    | NEW_OBJECT      | SYSTEM$TYPEOF(NEW_OBJECT)            |
    |-----------------+--------------------------------------|
    | {               | OBJECT(state VARCHAR(16777216))[LOB] |
    |   "state": "CA" |                                      |
    | }               |                                      |
    +-----------------+--------------------------------------+
    
  • この関数がオブジェクトからすべてのキーを削除した場合、 OBJECT() 型の空の構造化 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]             |
    +------------+---------------------------+
    

    構造化 OBJECT の型にキーと値のペアが含まれる場合、それらのペアの名前と型は型の括弧内に含まれます(例えば、 OBJECT(city VARCHAR))。空の構造化 OBJECT はキーと値のペアを含まないため、括弧は空です。

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