实践环境
数据库:postgresql 9.4;操作系统:windows
创建包含数组类型的数据库
注意在设置default 值时(当然你可以不指定默认值),要声明数组的类型,像这样声明"::bigint[]"。
create table testarray( id serial primary key,images bigint[] default array[]::bigint[] );
插入数组值
注意插入数组时,也要声明数组的类型,同上
insert into testarray (images) values(array[1,2,3,4,5,6]::bigint[]);
查询刚插入的数据
查询语句:
select * from testarray;@H_301_33@ 结果: @H_301_33@
数组的操作
判断元素是否存在(操作符:"any")
@H_301_33@ 要注意为查询出来的数组指定类型。select 0 = any ((select images from testarray where id=1)::int[]) as isContain
select array_remove((select images from testarray)::varchar[],'1');
查询结果:
删除元素,保存结果
@H_301_33@ 思路是将数据查询出来进行操作之后("||"是一个数组操作符,合并元素和数组),再保存回到数据库。可以删除单个元素,也可以删除一个元素集(另一个数组),举一反三。update testarray set images = (select images from testarray where id=1)::int[] || 1;
select images from testarray;@H_301_33@
给数据添加元素(操作符:"||"),但是不保存
@H_301_33@ 给数组添加元素实际上就是将元素合并到一个数组里,办法很多,这里只距离"||"操作符的使用。单个元素添加到数组
select (select images from testarray where id=1)::int[] || 100 as newimages;@H_301_33@
添加多个元素到数组
select (select images from testarray where id=1)::int[] || array[200,300,400]::int[] as newimages;@H_301_33@
给数据添加元素,并且保存
@H_301_33@ 思路同5.3update testarray update set images = (select images from testarray where id=1)::int[] || array[200,400]::int[] ;
select images from testarray;@H_301_33@