跳到主要内容

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
低成本
快速分析
多种数据源
弹性扩展
注册