PostgreSQL中array的常见用法

Posted 张志翔 ̮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PostgreSQL中array的常见用法相关的知识,希望对你有一定的参考价值。

        这些关于array的常见的脚本用法,可以满足日常需要:

---array 
--命名表
create table arraytest(inttype int,intshuzu int[],varshuzu varchar(32)[][]);
--输入array值
INSERT INTO test values(1, ARRAY['os','dba', '123','456']);

--多维数组,在向多维数组插入值时,各个维度的元素个数必须相同,否则会报错
INSERT INTO test values(1, ARRAY[['os', 'dba'],['dba', 'os']]);

--取数组中的一个元素
(array_agg(eff_date))[1] 取数组的第一个元素(下标从1开始)

--array_to_string(anyarray, text) 使用指定的分隔符(第二个参数) 将数组元素连接为字符串  
array_to_string(ARRAY[1,2,3], ',')  结果:'1,2,3'

--string_to_array(text, text) 用指定的分隔符分隔的字符串转成数组
string_to_array('1,2,3', ',')   结果:1, 2, 3

--unnest(anyarray)  把数组变成多行返回
select * from book;
id | name | tag 
----+------+----------
1 | java | aa,bb,cc
2 | C++ | dd,ee
则
select name,unnest(string_to_array(tag,',')) from book;
 name | unnest 
------+--------
 java | aa
 java | bb
 java | cc
 C++  | dd
 C++  | ee

--聚合函数 把多行值合并成一行
array_agg(exp, ',') --把表达式变成数组
string_agg(exp, ',') --把表达式变成一个字符串


--array_length(anyarray, int) 返回数组指定维度的长度,维度数是有由第二个参数指定的
array_length(ARRAY[1, 2, 4], 1)  结果:3
array_length(ARRAY[[1, 2], [3, 4], [5, 6]], 1)  结果:3
array_length(ARRAY[[1, 2], [3, 4], [5, 6]], 2)  结果:2
 
--同维度的数组与数组连接
ARRAY[1, 2] || ARRAY[3, 4]  

结果:1,2,3,4

--@> 包含 

ARRAY[1, 2, 3] @> ARRAY[1, 2] 

结果:t

ARRAY[1, 2, 3] @> ARRAY[1, 4] 

结果:f


--数组包含某元素否
select * from mytable where 'Journal'=ANY(pub_types);
即语法是<value> = ANY ( <array> )。还要注意postresql中的字符串文字是用单引号写的。


--array_remove(anyarray, anyelement)  移除数组中为指定值的元素,只支持一维数组
array_remove(ARRAY[1, 2, 3], 2)             
--结果: 1, 3
array_remove(ARRAY[1, 2, 3, 2, 1, 2], 2)   
 --结果: 1, 3. 1
					
--array_replace(anyarray, anyelement, anyelement) 把数组中等于指定值元素的值用另一个指定值替代  
array_replace(ARRAY[1, 4, 3], 4, 2)  结果:1,2,3

以上是关于PostgreSQL中array的常见用法的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL之Array_to_String用法

PostgreSQL之Array_to_String用法

Swift中常见的String用法,Array高阶使用,Set集合操作

php中array用法

numpy的一些常见用法

最全的Linux运维bash脚本常见用法总结