数据库版本

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. vue过滤出字符串中的汉字,match加正则

    vue过滤出字符串中的汉字,match加正则 str="23申迪MTN001(102380026)";str.match(/[\u4e00-\u9fa5]/g).join(&quo ...

  2. 计算机视觉——SSD和YOLO简介

    前言 本文记录用,防止遗忘 计算机视觉--SSD和YOLO简介 课件(单发多框检测SSD) 生成锚框 对每个像素,生成多个以它为中心的锚框 给定n个大小 s1, ...,s2,和m个高宽比,那么生成 ...

  3. Mysql之迂回连接术

    转载请注明来源:https://www.cnblogs.com/Sherlock-L/p/14932870.html 关键词:OmniDB.Mysql Router 背景:项目的测试数据库放在了生产机 ...

  4. 关于同时使用Vue.js 和 Jquery时dom事件失效问题

    先加载vue.js,让页面渲染完成后加载jq,给jq绑定ready事件 $(document).ready(function(){ $(function(){ (Jq) }); });

  5. 25js String(字符串)对象

    <!DOCTYPE html> <html lang="en">   <head>     <meta charset="UTF ...

  6. 和为K的子数组

    给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的连续子数组的个数 . /** * @param {number[]} nums * @param {number} k ...

  7. (0514)python学习-思维导图

  8. ctfshow web入门 命令执行 37-39

    37-39 基于 GET 传参的 include() 38.39 是 37 的变种 分析 伪协议常用于文件包含漏洞中 文件包含函数有:include.include_once.require.requ ...

  9. moment 时区问题

        moment.parseZone('2023-01-11T16:54:31.6864601').utc().format('YYYY-MM-DD HH:mm:ss')   文档 | Momen ...

  10. 【键盘快捷键】Super键

    键盘快捷键 Super键 Windows/方框键.它有时也会被称为 Windows 键,徽标键或系统键 打开任务管理器 Ctrl+Shift+Esc