![](/img/trans.png)
[英]Get data on click of load more button from start index to end index using LINQ
[英]Remove n elements from array using start and end index
我在Postgres數據庫中有下表:
CREATE TABLE test(
id SERIAL NOT NULL,
arr int[] NOT NULL
)
數組包含約500k元素。
我想知道是否存在一種有效的方法來更新arr
列,方法是從給定開始索引和結束索引的數組中刪除一組元素,或者僅刪除要刪除的“ n個第一元素”的數量。
您可以使用切片(請參見8.15.3。訪問數組 )。
create table example
as select array[1,2,3,4,5,6,7,8] arr;
刪除前三個元素:
select arr[4:8]
from example;
arr
-------------
{4,5,6,7,8}
(1 row)
從4到5刪除元素:
select arr[1:3] || arr[6:8] as arr
from example;
arr
---------------
{1,2,3,6,7,8}
(1 row)
如果數組的長度未知,則刪除前5個元素:
select arr[6:array_length(arr,1)]
from example;
arr
---------
{6,7,8}
(1 row)
您可以訪問單個元素或元素范圍:
例如,如果要刪除元素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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.