Postgresql中array的常见用法

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}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值