PostgreSQL陣列如何去除交集

2021-10-07 12:46:49 字數 1328 閱讀 7844

postgresql中支援多種型別的資料型別,其中陣列型別在pg中也是被頻繁使用的一種,我們可以定義某列為變長多維陣列。

那麼對於不同陣列我們怎麼獲取陣列的交集,進行去除交集等操作呢?

對於字串,我們可以使用except來直接進行去除交集,那麼陣列該怎麼辦呢?

對於陣列的去除交集我們的思路大致為:

1、先把陣列轉換成字串;

2、將字串的元素拆分然後進行去除交集;

3、將獲得的字串轉換成陣列。

例子:

我們使用上述的思路來將[1,2,3,4,5]和[2,3]這兩個陣列進行去除交集。

1、陣列轉換字串

bill=

# select array_to_string(array[1,2,3,4,5],',');

array_to_string

-----------------1,

2,3,

4,5(

1row

)

2、拆分字串

bill=

# select regexp_split_to_table(array_to_string(array[1,2,3,4,5],',') ,',');

regexp_split_to_table

-----------------------12

345(

5rows

)

3、對拆分的元素進行去除交集

bill=

# select regexp_split_to_table(array_to_string(array[1,2,3,4,5],',') ,',') except select regexp_split_to_table(array_to_string(array[2,3],','),',');

regexp_split_to_table

-----------------------45

1(3rows

)

4、將去除交集後的字串轉換成陣列

bill=

# select array(select regexp_split_to_table(array_to_string(array[1,2,3,4,5],',') ,',') except select regexp_split_to_table(array_to_string(array[2,3],','),','));

array

--------- (

1row

)

js中陣列如何去重

比較簡單的去重方法一 方法一 要呼叫indexof 如果當前陣列的第i項在當前陣列 現的位置不是i,那麼就是重複項,是i那就存入陣列 function arr num return temp var aa 1,2,2 4,9,a a 2,3,5,6,5 console.log arr aa 方法二 ...

C 如何給整型陣列去重?如何排序?

c 中獨特的陣列語法真的讓我感到腦闊疼。記錄一下這奇怪的用法,陣列與泛型list搭配食用更佳哦 先將陣列num轉換成泛型list,再使用泛型方法distinct 去重 list int list num.tolist list int newlist list.distinct tolist 返回去...

如何去重只保留一項 前端日記 如何實現陣列去重?

假設有陣列 array 1,5,2,3,4,2,3,1,3,4 寫乙個函式 unique,使得 unique array 的值為 1,5,2,3,4 保留不重複的值。方法一 使用set實現 let arr 1,5,2,3,4,2,3,1,3,4 function unique arr console...