PGSQL数组类型操作

前言

PostgreSQL支持表的字段使用定长或可变长度的一维或多维数组,数组的类型可以是任何数据库内建的类型、用户自定义的类型、枚举类型以及组合类型。
转载于: https://blog.csdn.net/ma286388309/article/details/129884297

1.定义数组类型

create table t_test (
	id bigint,
	name integer[],
	address text[]
);

2.新增数据

insert into t_test(id,name,address) values(1,'{1,2}','{"beijing","shanghai"}');

3.修改数组

--使用||修改
update t_test set name = name||'{3}' , address = address||'{"shenzhen"}' where id=1;
--使用array_append函数修改
update t_test set name = array_append(name,3) , address = array_append(address,'shenzhen') where id=1;

4. 数组删除

通过数组类型删除整行数据。

--如果name数组的第二个元素为1,则删除整行数据
delete from t_test where name[2] = 1;

如果要删除数组中的某个元素,需要利用array_remove函数配合update语句实现,代码如下。

update t_test set name= array_remove(name,3) where id=2;

5.数组查询

查询数组中包含2的数据:

select * from t_test where 2 = any(name)

select * from t_test where array_position(name,2)>0;

6. 数组类型常用函数

函数说明语句结果
array_append向数组的末尾添加元素array_append(ARRAY[1,2], 3){1,2,3}
array_prepend向数组的开头添加函数array_prepend(1, ARRAY[2,3]){1,2,3}
array_cat连接两个数组array_cat(ARRAY[1,2,3], ARRAY[4,5]){1,2,3,4,5}
array_replace用新值替换每个等于给定值的数组元素array_replace(ARRAY[1,2,5,4], 5, 3){1,2,3,4}
array_remove删除某个给定值的数组元素array_remove(ARRAY[1,2,3,4],4){1,2,3}
[start:end]通过下标范围数组元素select (ARRAY[‘a’,‘b’,‘c’,‘d’])[1:2]{a,b}
array_position数组中指定元素出现的位置array_position(ARRAY[1,8,3,7], 8)2
array_dims返回数组维数的文本表示array_dims(ARRAY[[1,2,3], [4,5,6]])[1:2][1:3]
array_lower返回数组维数的下界array_lower(ARRAY[1,2,3,4], 1)1
array_upper返回数组维数的上界array_upper(ARRAY[1,2,3,4], 1)4
array_ndims返回数组的维数array_ndims(ARRAY[[1,2,3], [4,5,6]])2
array_length返回数组维度的长度array_length(array[1,2,3], 1)3
cardinality返回数组中的总元素数量,如果数组是空的则为0cardinality(ARRAY[1,2,3,5])4
array_to_string将数组转换为字符串,使用分隔符连接数组元素select array_to_string(ARRAY[1, 2, 3], ‘,’)1,2,3
string_to_array使用指定的分隔符把字符串分隔成数组元素select string_to_array(‘a,b,c’,‘,’){a,b,c}
array_agg把多个值合并到一个数组中SELECT id, array_agg(label) FROM t_label group by id{label1,label2}
unnest分解一个数组为一组行select unnest(ARRAY[1,2,3])[1,2,3]
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值