gpt4 book ai didi

sql - 使用开始和结束索引从数组中删除 n 个元素

转载 作者:行者123 更新时间:2023-11-29 11:58:59 25 4
gpt4 key购买 nike

我在 Postgres 数据库中有下表:

CREATE TABLE test(
id SERIAL NOT NULL,
arr int[] NOT NULL
)

数组包含大约 50 万个元素。

我想知道是否有一种有效的方法来更新 arr 列,方法是从给定开始和结束索引的数组中删除一组元素,或者只是“n 个第一个元素”的数量删除。

最佳答案

您可以 access单个元素或元素范围:

如果你例如想要删除元素 5 到 8,你可以这样做:

select arr[1:4]||arr[9:]
from test;

或作为更新:

update test
set arr = arr[1:4]||arr[9:];

要删除“前 n 个元素”,只需使用第 n+1 个元素之后的切片,例如删除前 5 个元素:

select arr[6:]
from test;

arr[6:] 语法需要 Postgres 9.6 或更高版本,对于更早的版本你需要

select arr[6:cardinality(arr)]
from test;

cardinality() 是在 9.4 中引入的,如果您使用的是更旧的版本,则需要:

select arr[6:array_lengt(arr,1)]
from test;

关于sql - 使用开始和结束索引从数组中删除 n 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41830796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com