表1.数组操作符

操作符 描述 例子 结果
= 等于 ARRAY[1.1,2.1,3.1]::int[] = ARRAY[1,2,3] t
<> 不等于 ARRAY[1,2,3] <> ARRAY[1,2,4] t
< 小于 ARRAY[1,2,3] < ARRAY[1,2,4] t
> 大于 ARRAY[1,4,3] > ARRAY[1,2,4] t
<= 小于等于 ARRAY[1,2,3] <= ARRAY[1,2,3] t
>= 大于等于 ARRAY[1,4,3] >= ARRAY[1,4,3] t
@> 包含 ARRAY[1,4,3] @> ARRAY[3,1] t
<@ 被包含 ARRAY[2,7] <@ ARRAY[1,7,4,2,6] t
&& 重叠(具有公共元素) ARRAY[1,4,3] && ARRAY[2,1] t
|| 数组和数组串接 ARRAY[1,2,3] || ARRAY[4,5,6] {1,2,3,4,5,6}
|| 数组和数组串接 ARRAY[1,2,3] || ARRAY[[4,5,6],[7,8,9]] {{1,2,3},{4,5,6},{7,8,9}}
|| 元素到数组串接 3 || ARRAY[4,5,6] {3,4,5,6}
|| 数组到元素串接 ARRAY[4,5,6] || 7 {4,5,6,7}

数组比较使用默认的 B-Tree 在元素数据类型上的比较函数对数组内容按元素逐一进行。 多维数组的元素按照行序进行访问(最后的下标变化最快)。如果两个数组的内容相同但维数不等,那么维度信息中的第一个不同将决定排序顺序。

表2.数组函数

函数 返回类型 描述 例子 结果
array_append(anyarray, anyelement) anyarray 向一个数组的末端追加一个元素 array_append(ARRAY[1,2], 3) {1,2,3}
array_cat(anyarray, anyarray) anyarray 连接两个数组 array_cat(ARRAY[1,2,3], ARRAY[4,5]) {1,2,3,4,5}
array_ndims(anyarray) int 返回数组的维度数 array_ndims(ARRAY[[1,2,3], [4,5,6]]) 2
array_dims(anyarray) text 返回数组的维度的文本表示 array_dims(ARRAY[[1,2,3], [4,5,6]]) [1:2][1:3]
array_fill(anyelement, int[], [, int[]]) anyarray 返回一个用提供的值和维度初始化好的数组,可以选择下界不为 1 array_fill(7, ARRAY[3], ARRAY[2]) [2:4]={7,7,7}
array_length(anyarray, int) int 返回被请求的数组维度的长度 array_length(array[1,2,3], 1) 3
array_lower(anyarray, int) int 返回被请求的数组维度的下界 array_lower('[0:2]={1,2,3}'::int[], 1) 0
array_position(anyarray, anyelement [, int]) int 返回数组中第二个参数第一次出现的下标。 起始于第三个参数或第一个元素指示的元素位置(数组必须是一维的) array_position(ARRAY['sun','mon','tue','wed','thu','fri','sat'], 'mon') 2
array_positions(anyarray, anyelement) int[] 返回作为第一个参数的数组中第二个参数出现的数组下标(数组必须是一维的) array_positions(ARRAY['A','A','B','A'], 'A') {1,2,4}
array_prepend(anyelement, anyarray) anyarray 向一个数组的首部追加一个元素 array_prepend(1, ARRAY[2,3]) {1,2,3}
array_remove(anyarray, anyelement) anyarray 从数组中移除所有等于给定值的所有元素(数组必须是一维的) array_remove(ARRAY[1,2,3,2], 2) {1,3}
array_replace(anyarray, anyelement, anyelement) anyarray 将每一个等于给定值的数组元素替换成一个新值 array_replace(ARRAY[1,2,5,4], 5, 3) {1,2,3,4}
array_to_string(anyarray, text [, text]) text 使用提供的定界符和可选的空串连接数组元素 array_to_string(ARRAY[1, 2, 3, NULL, 5], ',', '*') 1,2,3,*,5
array_upper(anyarray, int) int 返回被请求的数组维度的上界 array_upper(ARRAY[1,8,3,7], 1) 4
cardinality(anyarray) int 返回数组中元素的总数,如果数组为空则返回 0 cardinality(ARRAY[[1,2],[3,4]]) 4
string_to_array(text, text [, text]) text[] 使用提供的定界符和可选的空串将字符串划分成数组元素 string_to_array('xx~^~yy~^~zz', '~^~', 'yy') {xx,NULL,zz}
unnest(anyarray) setof anyelement 将一个数组扩展成一组行 unnest(ARRAY[1,2])
1
2

(2 rows)

unnest(anyarray, anyarray [, ...]) setof anyelement, anyelement [, ...] 把多维数组(可能是不同类型)扩展成一个行的集合。 这只允许用在 FROM 子句中 unnest(ARRAY[1,2],ARRAY['foo','bar','baz'])
1    foo
2    bar
NULL baz

(3 rows)

array_positionarray_positions中, 每个数组元素与使用IS NOT DISTINCT FROM语法的搜索值进行比较。

array_position中,如果没有找到该值,则返回NULL

array_positions中,如果数组是NULL,则返回NULL; 如果数组中没有找到该值,相反返回空数组。

string_to_array中,如果定界符参数为 NULL,输入字符串中的每一个字符将变成结果数组中的一个独立元素。如果定界符是一个空串,则整个输入字符串被作为一个单一元素的数组返回。否则输入字符串会被在每一个出现定界符字符串的位置分裂。

string_to_array中,如果空值串参数被忽略或者为 NULL,输入中的子串不会被替换成 NULL。在array_to_string中,如果空值串参数被忽略或者为 NULL,该数组中的任何空值元素会被简单地跳过并且不会在输出串中被表示。

Postgresql数组操作符及数组函数相关推荐

  1. PostgreSQL数组操作符函数

    9.18. 数组函数和操作符 表 9-45显示了可以用于 array 类型的操作符. 表 9-45. Array 操作符 操作符 描述 例子 结果 = 等于 ARRAY[1.1,2.1,3.1]::i ...

  2. php数组(数组的定义、使用、删除数组、数组操作符、数组排序、数组元素查找、数组的常用函数)

    什么是数组 数组是一种数据类型,在PHP中广泛应用. 数组是一个可以存储一组或一系列数值的变量. 在PHP中,数组中的元素分为两个部分,分别为键(Key)和值(Value). "键" ...

  3. 如何从PostgreSQL json中提取数组

    如何从PostgreSQL json中提取数组 作者 digoal 日期 2016-09-10 标签 PostgreSQL , json , 数组 , jsonb 背景 在PostgreSQL中使用J ...

  4. 指针数组,数组指针,指针函数,函数指针,二级指针详解

    先看个简单的:char *p,这定义了一个指针,指针指向的数据类型是字符型,char  *(p)定义了一个指针P: char *p[4], 为指针数组,由于[]的优先级高于*,所以p先和[]结合,p[ ...

  5. 【C 语言】指针 与 数组 ( 指针 | 数组 | 指针运算 | 数组访问方式 | 字符串 | 指针数组 | 数组指针 | 多维数组 | 多维指针 | 数组参数 | 函数指针 | 复杂指针解读)

    相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...

  6. C++阶段01笔记07【指针(基本概念、变量定义和使用、内存空间、空指针和野指针、const修饰指针、指针和数组、指针和函数)】

    C++| 匠心之作 从0到1入门学编程[视频+课件+笔记+源码] 目录 7 指针 7.1 指针的基本概念 7.2 指针变量的定义和使用 示例 7.3 指针所占内存空间 示例 7.4 空指针和野指针 示 ...

  7. A01_[NumPy中文网]数组基础(创建数组,多维数组切片,数组属性)、使用数组(基本操作符,数组特殊运算符)、索引(花式索引,布尔索引,缺省索引)

    NumPy简单入门教程 NumPy是Python中的一个运算速度非常快的一个数学库,它非常重视数组.它允许你在Python中进行向量和矩阵计算,并且由于许多底层函数实际上是用C编写的,因此你可以体验在 ...

  8. 【C++深度剖析教程12】数组操作符的重载

    之前写的C++学习记录忘记打编号了,从今天开始,所有内容,记录编号,方便以后的查阅复习.今天学习的是C++中,数组操作符的重载. 上一篇博文写的是介绍C++中的字符串类,我们知道,C++标准库中通过s ...

  9. PostgreSQL 多重含义数组检索与条件过滤 (标签1:属性, 标签n:属性) - 包括UPSERT操作如何修改数组、追加数组元素

    摘要: 标签 PostgreSQL , 多重函数数组 , UDF索引 , 过滤 , 文本处理 背景 PG的数组类型,被广泛应用于 画像系统 , 标签系统. 在一些业务重建中,对数组内容的定义往往包含了 ...

最新文章

  1. Windows平台下程序打包流程
  2. SystemProperities
  3. CTFshow php特性 web143
  4. 使用Python操作MySQL数据库
  5. 用Java访问带有Kerberos认证的HBase
  6. shiro学习(12)No WebApplicationContext found:
  7. 动态游标for循环_【【动图算法】(动态规划篇):最长回文子串
  8. 计算机word表格平均分,Word表格自动求和_word求平均值 - 学无忧
  9. 学习C语言目标及规划
  10. 20190904_chip-seq/ ATAC-seq/DAP-seq 原理理解
  11. sql 按照天环比_同比环比sql实例
  12. python爬虫--爬取-猫眼电影-代码
  13. FTP服务器的搭建及测试
  14. 如何舒服的在电视上操作电脑
  15. 王牌战士没显示我的服务器,王牌战士号没了怎么回事 游戏档案被销号解决方法...
  16. 中后台管理系统之登录流程
  17. 计算机键盘清洗怎么弄,笔记本电脑键盘怎么清洗干净(专业户教你清洗键盘简易方法)...
  18. UTF8编码的原理及白名单过滤utf8mb4(Caused by: java.sql.BatchUpdateException: Incorrect string value)
  19. MindManager中文汉化补丁V2021.20思维导图软件
  20. 4399客户端实习生笔试

热门文章

  1. 红帽linux竞赛,浅谈红帽linux挑战赛(三)
  2. win11 某个任务栏图标显示空白解决方法
  3. TCP三次握手原理详解
  4. 计算机设备标签怎么贴,电脑怎么打印不干胶标签 电脑打印不干胶标签操作流程【图文】...
  5. 扫地僧是怎样练成的,前辈学51单片机的感悟是怎么样的
  6. Hadoop 中的数据类型
  7. js滚动到指定位置显示或隐藏元素
  8. ARM S5PV210 X210 刷机教程总结
  9. c++中bitset的用法总结
  10. 软件需求、架构培训(一)