跳到主要内容

ARRAY_INSERT

引入或更新于:v1.2.762

在指定索引处向 JSON 数组中插入值,并返回更新后的 JSON 数组。

别名

  • JSON_ARRAY_INSERT

语法

ARRAY_INSERT(<json_array>, <index>, <json_value>)
参数描述
<json_array>待修改的 JSON 数组
<index>插入位置索引:正数在指定位置插入(若超出范围则追加至末尾);负数从数组末尾计算位置(若超出范围则在开头插入)
<json_value>待插入的 JSON 值

返回类型

JSON 数组。

示例

<index> 为非负整数时,新元素插入指定位置,现有元素右移:

-- 新元素插入位置 0(数组开头),所有原始元素右移
SELECT ARRAY_INSERT('["task1", "task2", "task3"]'::VARIANT, 0, '"new_task"'::VARIANT);

-[ RECORD 1 ]-----------------------------------
array_insert('["task1", "task2", "task3"]'::VARIANT, 0, '"new_task"'::VARIANT): ["new_task","task1","task2","task3"]

-- 新元素插入位置 1(task1 与 task2 之间)
SELECT ARRAY_INSERT('["task1", "task2", "task3"]'::VARIANT, 1, '"new_task"'::VARIANT);

-[ RECORD 1 ]-----------------------------------
array_insert('["task1", "task2", "task3"]'::VARIANT, 1, '"new_task"'::VARIANT): ["task1","new_task","task2","task3"]

-- 索引超出数组长度时,新元素追加至末尾
SELECT ARRAY_INSERT('["task1", "task2", "task3"]'::VARIANT, 6, '"new_task"'::VARIANT);

-[ RECORD 1 ]-----------------------------------
array_insert('["task1", "task2", "task3"]'::VARIANT, 6, '"new_task"'::VARIANT): ["task1","task2","task3","new_task"]

负数 <index> 从数组末尾计数:-1 表示末位元素前,-2 表示倒数第二位前,依此类推:

-- 新元素插入末位元素 (task3) 之前
SELECT ARRAY_INSERT('["task1", "task2", "task3"]'::VARIANT, -1, '"new_task"'::VARIANT);

-[ RECORD 1 ]-----------------------------------
array_insert('["task1", "task2", "task3"]'::VARIANT, - 1, '"new_task"'::VARIANT): ["task1","task2","new_task","task3"]

-- 负数索引超出范围时,新元素插入数组开头
SELECT ARRAY_INSERT('["task1", "task2", "task3"]'::VARIANT, -6, '"new_task"'::VARIANT);

-[ RECORD 1 ]-----------------------------------
array_insert('["task1", "task2", "task3"]'::VARIANT, - 6, '"new_task"'::VARIANT): ["new_task","task1","task2","task3"]
欢迎体验 Databend Cloud

基于 Rust + 对象存储构建的新一代多模态数仓,一个平台即可进行 BI、向量、全文检索及地理空间分析。

支持标准 SQL,自动弹性伸缩,助您快速构建现代化数据平台。

注册即领 ¥200 代金券。

注册体验