类别:

半结构化和结构化数据函数 (数组/对象)

OBJECT_DELETE

返回一个对象,它包含输入(即源)对象的内容,并移除了一个或多个键。

语法

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

    该函数会返回 OBJECT(state VARCHAR) 类型的 OBJECT,其中不包含 city 键。

    +-----------------+--------------------------------------+
    | 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(城市 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
语言: 中文