数据库版本

postgres=# SELECT version(); 
version---------------------------------------------------------------------------------------------------------- 
PostgreSQL 9.6.0 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit
(1 row)

1,创建表

postgres=# CREATE TABLE test_array1(id int,array_i int[],arrat_t text[]);
CREATE TABLE

数组类型插入

postgres=# SELECT '{1,2,3}',array[1,2,3]; 
?column? | array
----------+--------- 
{1,2,3} | {1,2,3}
(1 row) postgres=# INSERT INTO test_array1 values(1,'{1,2,3}','{a,b,c}'); INSERT 0 1 postgres=# INSERT INTO test_array1 values(2,array[1,2,3],array['a','b','c']); INSERT 0 1

查询数组类型

postgres=# SELECT array_i,arrat_t FROM test_array1; 
array_i | arrat_t
---------+--------- 
{1,2,3} | {a,b,c} {1,2,3} | {a,b,c}
(2 rows)
postgres=# SELECT array_i[1],arrat_t[3] FROM test_array1; 
array_i | arrat_t
---------+--------- 
1 | c 1 | c
(2 rows)

2,数组元素的追加、删除、更新

追加

postgres=# SELECT ARRAY_APPEND(array[1,2,3],4); 
array_append
-------------- 
{1,2,3,4}
(1 row)
postgres=# SELECT array[1,2,3]||4; 
?column?
----------- 
{1,2,3,4}
(1 row)

删除

postgres=# SELECT ARRAY_REMOVE(ARRAY[1,1,2,3],1);
array_remove
-------------- 
{2,3}
(1 row)

修改

postgres=# UPDATE test_array1 SET array_i[2] = 1 WHERE id = 1;
UPDATE 1
postgres=# UPDATE test_array1 SET array_i = array[1,2,4] WHERE id = 2;
UPDATE 1

3,数组操作符

postgres=# SELECT ARRAY[1.1,2.2,3.2]::int[] = array[1,2,3];--等于 
?column?
---------- 
t
(1 row)
postgres=# SELECT ARRAY[1,2,3] != array[1,2,4];--不等于 
?column?
----------
 t
(1 row)
postgres=# SELECT ARRAY[1,2,4] > array[1,2,3];--大于 
?column?
---------- 
t
(1 row)
postgres=# SELECT ARRAY[1,2,3] < array[1,2,4];--小于 
?column?
---------- 
t
(1 row)
postgres=# SELECT ARRAY[1,2,4] >= array[1,2,3];--大于或等于 
?column?
---------- 
t
(1 row)
postgres=# SELECT ARRAY[1,2,3] <= array[1,2,4];--小于或等于 
?column?
---------- 
t
(1 row)
postgres=# SELECT ARRAY[1,2,3] @> array[1,2];--包含 
?column?
---------- 
t
(1 row)
postgres=# SELECT ARRAY[1,2] <@ array[1,2,3];--被包含 
?column?
---------- 
t
(1 row)
postgres=# SELECT array[1,2]||array[3,4];--串联 
?column?
----------- {1,2,3,4}
(1 row)
postgres=# SELECT array[1,2]||array[[3,4],[5,6]];--串联 
?column?
--------------------- 
{{1,2},{3,4},{5,6}}
(1 row)

4,数组函数

获取数组维度

postgres=# SELECT ARRAY_NDIMS(ARRAY[1,2,3]); 
array_ndims
------------- 
1
(1 row)

获取数组长度

postgres=# SELECT ARRAY_LENGTH(ARRAY[1,2,3],1); 
array_length
-------------- 
3
(1 row)

返回数组元素第一次出现的位置

postgres=# SELECT ARRAY_POSITION(ARRAY[1,1,2,3],2);
array_position
---------------- 
3
(1 row)

替换数组中的相同组元素

postgres=# SELECT ARRAY_REPLACE(ARRAY[1,1,2],1,2); array_replace
--------------- 
{2,2,2}
(1 row)

将数组输出到字符串

postgres=# SELECT ARRAY_TO_STRING(ARRAY['a','b',null,'c'],',','5');--null转为后面指定字符 
array_to_string
----------------- 
a,b,5,c
(1 row)

 

posted on 2021-07-11 23:08  jl1771  阅读(448)  评论(0编辑  收藏  举报