数据库版本

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数组类型的更多相关文章

  1. PostgreSQL Array 数组类型与 FreeSql 打出一套【组合拳】

    前言 PostgreSQL 是世界公认的功能最强大的开源数据库,除了基础数据类型 int4/int8/varchar/numeric/timestamp 等数据类型,还支持 int4[]/int8[] ...

  2. java中用spring实现数组类型输出

    java 中的几个数组类型 1.Department类 package com.yy.collection; import java.util.List; import java.util.Map; ...

  3. JS数组类型检测

    在强类型语言,数组类型检测是非常容易的事情(typeof就可以解决),而在弱语言JS数据类型就很容易混淆了. JS中常见的数据类型有:number.string.boolean.undefined.f ...

  4. C语言 数组类型与数组指针类型

    //数组类型与数组指针类型 #include<stdio.h> #include<stdlib.h> #include<string.h> void main(){ ...

  5. delphi 数组类型与数组指针的巧妙利用

    {本例通过存取结构, 慢慢引入了数组类型与指针的一些使用方法; 其中六个小例子的测试内容和结果都是一样的. ---------------------------------------------- ...

  6. mybatis 处理数组类型及使用Json格式保存数据 JsonTypeHandler and ArrayTypeHandler

    mybatis 比 ibatis 改进了很多,特别是支持了注解,支持了plugin inteceptor,也给开发者带来了更多的灵活性,相比其他ORM,我还是挺喜欢mybatis的. 闲言碎语不要讲, ...

  7. delphi 数组类型

    数组类型 数组类型定义了一组指定类型的元素序列,在方括号中填入下标值就可访问数组中的元素.定义数组时,方括号也用来指定可能的下标值.例如,下面的代码中定义了一个有 24 个整数的数组:type     ...

  8. JavaScript高级程序设计(十):数组类型

    先导: 访问对象属性使用的都是点表示法.另外,我们还可以使用方括号表示法来访问对象的属性.在使用方括号的时候,应该将要访问的属性以字符串的形式放到方括号中.这两种方法没有什么区别.但是方括号的优点是可 ...

  9. webservice调用接口,接口返回数组类型

    1. 其中sendSyncMsg1接口是方法名,Vector实现了List接口,xml是sendSyncMsg1的方法形参 Service service = new Service(); Call ...

  10. 使用typedef语句定义数组类型

    使用typedef语句定义数组类型     1. 一维数组类型的定义格式 typedef <元素类型关键字><数组类型名>[<常量表达式>]; 例如: (1) ty ...

随机推荐

  1. 如何在Axure RP 8.0 中打开页面指定的动态面板

    有时在制作原型的时候,需要打开另一个页面指定的动态面板,研究了一下分享给大家 方法/步骤 1.打开Axure RP 8.0,在index面面中拖出来一个按钮,写上文字"打开page1/sta ...

  2. [Notes-DS-2]线性结构

    分割线------------- 分割线----------------

  3. sxt_(001_002)_web简介

    一.web 网络.网页二.web应用 运行在网络上的应用程序.三.网络应用的分类 3.1 c/s:client/server 如:qq.yy.lol 优点: 个性化更容易实现 更安全 占用网络资源少. ...

  4. socket-消息发送实战

    1. 函数用法 Handle.oobtainMessage(int what ,int arg1,int arg2,object obj)  2. 消息内容  3. 代码组合(隐私模式开关) 3.1 ...

  5. Android学习——控件ImageView

    1.主要属性 2.缩放类型

  6. python_test_5001_Moudle_pandas

    import pandas as pd import numpy as np from lib_001_decorator_log_funcname import decorator_log_func ...

  7. 日志服务化&可视化&统计化

    概述: ELK是Elasticsearch(简称es).Logstash.Kibana的简称,这三者是核心套件,但并非全部. Filebeat 日志采集工具  Logstash数据处理引擎   ela ...

  8. usb 2.0枚举过程

    device枚举过程: hub枚举过程:

  9. 遍历List时删除元素导致List抛出java.util.ConcurrentModificationException异常

    1 public static void main(String[] args) { 2 List<String> list = new ArrayList<String>() ...

  10. Oracle View的 With Check OPTION 參數有什麼用途?

    1. 當通過View Insert數據到定義此View的SQL中的基本表的時候,insert的資料要符合SQL中here條件,否則Insert View 的操作無法成功: 2. 注意:WITH REA ...