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 ...
随机推荐
- 学习笔记-Java流程控制
学习来源: [狂神说Java]Java零基础学习视频通俗易懂_哔哩哔哩_bilibili Java流程控制 用户交互Scanner 获取用户的输入 基本语法 Scanner s = new Scann ...
- springboot aop本地缓存防止重复提交
实现原理: 自定义防止重复提交标记(@RepeatSubmit). 对需要防止重复提交的Congtroller里的mapping方法加上该注解. 新增Aspect切入点,为@RepeatSubmitA ...
- python 爬虫 selenium 与 chromedriver
selenium 安装 pip install selenium chromedriver 下载 https://npm.taobao.org/mirrors/chromedriver?spm ...
- pytorch自定义RNN结构(附代码)
pytorch自定义LSTM结构(附代码) 有时我们可能会需要修改LSTM的结构,比如用分段线性函数替代非线性函数,这篇博客主要写如何用pytorch自定义一个LSTM结构,并在IMDB数据集上搭建了 ...
- JS中立即执行函数和闭包的区别
函数声明规则:必须指定一个函数名字 foo(); function foo() { console.log("函数声明") } 由于函数声明会被提升,所以调用函数可以在之前或之后调 ...
- efk部署
转载: https://www.cnblogs.com/liweiboy/p/16100002.html
- vue 添加代理
1.跟目录下新建vue.config.js文件,添加内容: module.exports = { assetsDir: 'static', parallel: false, publicP ...
- 直播平台搭建源码,canvas 画一条波浪线 进度条
直播平台搭建源码,canvas 画一条波浪线 进度条 <template> <view> <canvas :style="{'width': width ...
- oracle ebs 加锁
DECLARE -- lock l_lockname VARCHAR2(100); l_lockhandle VARCHAR2(200); l_lock_output NUMBER; l_locked ...
- 解决adb devices无法连接各种模拟器
经常使用到模拟器的童鞋,如果在使用adb devices命令时,发现出现"List of devices attached",模拟器USB调试都开启的情况下,也没有连接成功.这种情 ...