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的常见用法的主要内容,如果未能解决你的问题,请参考以下文章