pg数组类型
数据库版本
postgres=# SELECT version();
version----------------------------------------------------------------------------------------------------------
PostgreSQL 9.6.0 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit
(1 row)
1,创建表
postgres=# CREATE TABLE test_array1(id int,array_i int[],arrat_t text[]);
CREATE TABLE
数组类型插入
postgres=# SELECT '{1,2,3}',array[1,2,3];
?column? | array
----------+---------
{1,2,3} | {1,2,3}
(1 row)
postgres=# INSERT INTO test_array1 values(1,'{1,2,3}','{a,b,c}');
INSERT 0 1
postgres=# INSERT INTO test_array1 values(2,array[1,2,3],array['a','b','c']);
INSERT 0 1
查询数组类型
postgres=# SELECT array_i,arrat_t FROM test_array1;
array_i | arrat_t
---------+---------
{1,2,3} | {a,b,c} {1,2,3} | {a,b,c}
(2 rows)
postgres=# SELECT array_i[1],arrat_t[3] FROM test_array1;
array_i | arrat_t
---------+---------
1 | c 1 | c
(2 rows)
2,数组元素的追加、删除、更新
追加
postgres=# SELECT ARRAY_APPEND(array[1,2,3],4);
array_append
--------------
{1,2,3,4}
(1 row)
postgres=# SELECT array[1,2,3]||4;
?column?
-----------
{1,2,3,4}
(1 row)
删除
postgres=# SELECT ARRAY_REMOVE(ARRAY[1,1,2,3],1);
array_remove
--------------
{2,3}
(1 row)
修改
postgres=# UPDATE test_array1 SET array_i[2] = 1 WHERE id = 1;
UPDATE 1
postgres=# UPDATE test_array1 SET array_i = array[1,2,4] WHERE id = 2;
UPDATE 1
3,数组操作符
postgres=# SELECT ARRAY[1.1,2.2,3.2]::int[] = array[1,2,3];--等于
?column?
----------
t
(1 row)
postgres=# SELECT ARRAY[1,2,3] != array[1,2,4];--不等于
?column?
----------
t
(1 row)
postgres=# SELECT ARRAY[1,2,4] > array[1,2,3];--大于
?column?
----------
t
(1 row)
postgres=# SELECT ARRAY[1,2,3] < array[1,2,4];--小于
?column?
----------
t
(1 row)
postgres=# SELECT ARRAY[1,2,4] >= array[1,2,3];--大于或等于
?column?
----------
t
(1 row)
postgres=# SELECT ARRAY[1,2,3] <= array[1,2,4];--小于或等于
?column?
----------
t
(1 row)
postgres=# SELECT ARRAY[1,2,3] @> array[1,2];--包含
?column?
----------
t
(1 row)
postgres=# SELECT ARRAY[1,2] <@ array[1,2,3];--被包含
?column?
----------
t
(1 row)
postgres=# SELECT array[1,2]||array[3,4];--串联
?column?
----------- {1,2,3,4}
(1 row)
postgres=# SELECT array[1,2]||array[[3,4],[5,6]];--串联
?column?
---------------------
{{1,2},{3,4},{5,6}}
(1 row)
4,数组函数
获取数组维度
postgres=# SELECT ARRAY_NDIMS(ARRAY[1,2,3]);
array_ndims
-------------
1
(1 row)
获取数组长度
postgres=# SELECT ARRAY_LENGTH(ARRAY[1,2,3],1);
array_length
--------------
3
(1 row)
返回数组元素第一次出现的位置
postgres=# SELECT ARRAY_POSITION(ARRAY[1,1,2,3],2);
array_position
----------------
3
(1 row)
替换数组中的相同组元素
postgres=# SELECT ARRAY_REPLACE(ARRAY[1,1,2],1,2); array_replace
---------------
{2,2,2}
(1 row)
将数组输出到字符串
postgres=# SELECT ARRAY_TO_STRING(ARRAY['a','b',null,'c'],',','5');--null转为后面指定字符
array_to_string
-----------------
a,b,5,c
(1 row)
pg数组类型的更多相关文章
- PostgreSQL Array 数组类型与 FreeSql 打出一套【组合拳】
前言 PostgreSQL 是世界公认的功能最强大的开源数据库,除了基础数据类型 int4/int8/varchar/numeric/timestamp 等数据类型,还支持 int4[]/int8[] ...
- java中用spring实现数组类型输出
java 中的几个数组类型 1.Department类 package com.yy.collection; import java.util.List; import java.util.Map; ...
- JS数组类型检测
在强类型语言,数组类型检测是非常容易的事情(typeof就可以解决),而在弱语言JS数据类型就很容易混淆了. JS中常见的数据类型有:number.string.boolean.undefined.f ...
- C语言 数组类型与数组指针类型
//数组类型与数组指针类型 #include<stdio.h> #include<stdlib.h> #include<string.h> void main(){ ...
- delphi 数组类型与数组指针的巧妙利用
{本例通过存取结构, 慢慢引入了数组类型与指针的一些使用方法; 其中六个小例子的测试内容和结果都是一样的. ---------------------------------------------- ...
- mybatis 处理数组类型及使用Json格式保存数据 JsonTypeHandler and ArrayTypeHandler
mybatis 比 ibatis 改进了很多,特别是支持了注解,支持了plugin inteceptor,也给开发者带来了更多的灵活性,相比其他ORM,我还是挺喜欢mybatis的. 闲言碎语不要讲, ...
- delphi 数组类型
数组类型 数组类型定义了一组指定类型的元素序列,在方括号中填入下标值就可访问数组中的元素.定义数组时,方括号也用来指定可能的下标值.例如,下面的代码中定义了一个有 24 个整数的数组:type ...
- JavaScript高级程序设计(十):数组类型
先导: 访问对象属性使用的都是点表示法.另外,我们还可以使用方括号表示法来访问对象的属性.在使用方括号的时候,应该将要访问的属性以字符串的形式放到方括号中.这两种方法没有什么区别.但是方括号的优点是可 ...
- webservice调用接口,接口返回数组类型
1. 其中sendSyncMsg1接口是方法名,Vector实现了List接口,xml是sendSyncMsg1的方法形参 Service service = new Service(); Call ...
- 使用typedef语句定义数组类型
使用typedef语句定义数组类型 1. 一维数组类型的定义格式 typedef <元素类型关键字><数组类型名>[<常量表达式>]; 例如: (1) ty ...
随机推荐
- vue3使用echarts插件并实现点击下载图表功能
接到一个新的需求,就是用vue3制作一幅世界地图,并实现点击下载按钮将图表转变为图片下载到本地. 使用插件: html2canvasnpm安装: npm install html2canvas组件引入 ...
- SpringBoot打成war包,部署到Tomcat服务器
SpringBoot默认达成jar包,使用SpringBoot构想web应用,默认使用内置的Tomcat.但考虑到项目需要集群部署或者进行优化时,就需要打成war包部署到外部的Tomcat服务器中. ...
- 网页识别语音插件annyang可以实现识别中文
<html> <script src="a.js"></script> <script> if (annyang) { var co ...
- 解决不了ERROR: org.apache.hadoop.hbase.PleaseHoldException: Master is initializing啊
我今天真的好难受,在我结束hbase的配置的后,又是成功运行了shell命令,我以为万事大吉,结果下午再用shell命令时,给我报了这个错,我按着网上说的删了点东西,还是解决不了,难受啊. 我现在时决 ...
- eval()
s='12*2'd=eval(s)#字符串运算函数print(d) 结果: 24
- redis相关入门知识
redis介绍:是一种基于键值对的NoSql数据库,与许多键值对数据库不同是,它可以由string,hash,list,set,zest(有序集合).Bitmaps(位图).HyperLogLog.G ...
- CAD安装失败,如何才能删除(卸载)CAD?三步完美卸载CAD软件
CAD安装失败,怎么样才能彻底删除CAD各种残留注册表?有时候我们想将CAD重新安装,但却显示CAD已经安装,但又不见CAD软件程序文件,然后我们就会产生这样的疑问:CAD无法重新安装是怎么一回事?下 ...
- 基于Sobel算子的图像边缘检测
索贝尔算子(Sobeloperator)主要用于获得数字图像的一阶梯度,是一种离散性差分算子.它是prewitt算子的改进形式,改进之处在于sobel算子认为,邻域的像素对当前像素产生的影响不是等价的 ...
- Treetop Lights使用条款与免责协议
Treetop Lights (以下简称"我们")在此特别提醒您务必认真阅读.充分理解本<使用条款与免责协议>(以下简称"本协议")中各条款并选择是 ...
- hive复制表
create table talbe_copy as select * from talbe_origin;