PostgreSQL學習筆記 - 陣列型別
阿新 • • 發佈:2021-01-20
技術標籤:postgresqlsql陣列
PostgreSQL 支援一維陣列和多維陣列,常用的陣列型別為數字型別陣列和字元型陣列,也支援列舉型別、複合資料型別。
一、陣列型別插入方式
首先建立一張帶有陣列型別的表,SQL 語句如下:
CREATE TABLE t_course (
id integer,
title varchar(50),
contentids integer[],
description text[]
);
- 花括號方式
INSERT INTO t_course (id, title, contentids, description)
VALUES (1, 'PostgreSQL', '{111, 222, 333}', '{"描述1", "描述2"}');
- 使用 array 關鍵字
INSERT INTO t_course (id, title, contentids, description)
VALUES(2, 'PostgreSQL', array[111, 222, 333], array['描述1', '描述2']);
二、查詢陣列元素
指定查詢陣列中某個元素
SELECT contentids[2], description[1]
FROM t_course
WHERE id = 1 ;
執行結果如下:
跟以往學習程式語言中陣列索引一般從 0 開始不同,這裡陣列元素的引用通過方括號"[]"方式,資料下標編號範圍為 1 到 n,
n 為陣列長度。
三、陣列元素追加、更新、刪除
- 追加陣列元素
- 使用 array_append 函式向陣列末端追加元素,每次僅能追加一個元素,如需新增多個需要多次呼叫
SELECT array_append(array[1, 2, 3], 4);
- 使用 || 操作符追加元素,可追加多個元素
SELECT array[1, 2, 3] || 4 || 5;
- 更新陣列元素 & 更新整個陣列
UPDATE t_course SET
UPDATE t_course SET description = array['描述1','描述2','描述3'] WHERE id = 1;
- 刪除陣列元素
結果:{1, 6},array_remove 函式會刪除陣列中值等於給定值的所有陣列元素。SELECT array_remove(array[1, 5, 5, 6], 5);
四、陣列操作符
操作符 | 描述 | 例子 | 結果 |
---|---|---|---|
= | 等於 | ARRAY[1.1,2.1,3.1]::int[] = ARRAY[1,2,3] | t |
<> | 不等於 | ARRAY[1,2,3] <> ARRAY[1,2,4] | t |
< | 小於 | ARRAY[1,2,3] < ARRAY[1,2,4] | t |
> | 大於 | ARRAY[1,4,3] > ARRAY[1,2,4] | t |
<= | 小於或等於 | ARRAY[1,2,3] <= ARRAY[1,2,3] | t |
>= | 大於或等於 | ARRAY[1,4,3] >= ARRAY[1,4,3] | t |
@> | 包含 | ARRAY[1,4,3] @> ARRAY[3,1] | t |
<@ | 被包含於 | ARRAY[2,7] <@ ARRAY[1,7,4,2,6] | t |
&& | 重疊(有共同元素) | ARRAY[1,4,3] && ARRAY[2,1] | t |
|| | 陣列與陣列連線 | ARRAY[1,2,3] || ARRAY[4,5,6] | {1,2,3,4,5,6} |
|| | 陣列與陣列連線 | ARRAY[1,2,3] || ARRAY[[4,5,6],[7,8,9]] | {{1,2,3},{4,5,6},{7,8,9}} |
|| | 元素與陣列連線 | 3 || ARRAY[4,5,6] | {3,4,5,6} |
|| | 陣列與元素連線 | ARRAY[4,5,6] || 7 | {4,5,6,7} |