- 类别:
半结构化和结构化数据函数 (数组/对象)
OBJECT_INSERT¶
返回一个由输入 OBJECT 值组成的 OBJECT 值,并插入了一个新键值对(或者用新值更新了现有的键)。
语法¶
实参¶
必填:
object插入新键值对或更新现有键值对的源 OBJECT 值。
key要插入至 OBJECT 值的新键或将更新值的现有键。指定键必须与 OBJECT 值中的所有现有键不同,除非将
updateFlag设为 TRUE。value与键关联的值。
可选:
updateFlag布尔标志,当设置为 TRUE 时,指定输入值更新 OBJECT 值中的现有键值,而不是插入新键值对。
默认为 FALSE。
返回¶
该函数返回具有 OBJECT 数据类型的值。
使用说明¶
该函数支持 JSON null 值,但不支持 SQL NULL 值或键:
如果
key是 NULL 以外的任何字符串,并且value是 JSON null(例如PARSE_JSON('null')),则将键值对插入至返回的 OBJECT 值。如果
key或value为 SQL NULL,则返回的 OBJECT 值将省略键值对。
如果将可选的
updateFlag实参设置为 TRUE,则现有输入key将更新为输入value。如果省略updateFlag或将其设置为 FALSE,且该函数带有已存在于 OBJECT 值的输入键,则调用该函数会导致错误。。如果 update 标志设置为 TRUE,但相应键并未存在于 OBJECT 值,则会添加键值对。
对于 结构化的 OBJECT 值:
对于作为键的实参,您必须指定常量。
当
updateFlag实参为 FALSE(插入新的键值对时):如果指定一个存在于 OBJECT 值的键,则会发生错误。
该函数返回一个结构化的 OBJECT 值。OBJECT 值的类型包括新插入的键。例如,假设您添加具有
zipcode值 VARCHAR 的94402键:插入值的类型决定了添加到 OBJECT 类型定义中的类型。在这种情况中,
zipcode的值是转换为 VARCHAR 的值,因此zipcode的类型为 VARCHAR。
当
updateFlag实参为 TRUE 时(当您替换现有键值对时):如果指定的键并未存在于 OBJECT 值中,则会发生错误。
该函数返回相同类型的结构化 OBJECT 值。
将插入值的类型 强制转换 为现有键的类型。
示例¶
以下示例调用 OBJECT_INSERT 函数:
添加并更新键值对¶
示例使用下表:
将新键值对添加到 OBJECT 值¶
将第三个键值对插入到包含两个键值对的 OBJECT 值中:
将两个新的键值对插入到 OBJECT 值中,同时省略一个键值对:
d由一个 JSON null 值组成。
e由一个 SQL NULL 值组成,因此被省略。
f由包含“null”的字符串组成。
更新 OBJECT 值中的键值对¶
使用新值 ("valuex") 更新 OBJECT 值中的现有键值对 ("b": "value2"):
添加并更新嵌套 OBJECT 值¶
这些示例使用具有嵌套 OBJECT 值的下表:
将新的嵌套键值对添加到嵌套 OBJECT 值¶
以下示例将新的嵌套键值对添加到表中的嵌套 OBJECT 值。它使用 CASE 表达式,为每行指定添加的键值对:
更新嵌套 OBJECT 值中的键值对¶
以下示例将更新表中 OBJECT 值的嵌套键值对: