postgresql数组重叠(有共同元素)查询

这篇具有很好参考价值的文章主要介绍了postgresql数组重叠(有共同元素)查询。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

直接上最终代码:

select distinct id from a where  string_to_array(in_area,',') && (select ARRAY_AGG( code) from areas where code like '11%' or code = '100000')::TEXT[]

pg语法:

表 9.48显示了可用于数组类型的运算符。

表 9.48。数组运算符

操作员 描述 例子 结果
= 平等的 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,3] t
<@ 包含于 ARRAY[2,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 树比较函数逐个元素比较数组内容,并根据第一个差异进行排序。在多维数组中,元素按行主顺序访问(最后一个下标变化最快)。如果两个数组的内容相等但维数不同,则维数信息中的第一个差异决定排序顺序。(这是 8.2 之前的PostgreSQL版本的一个变化:旧版本会声称两个具有相同内容的数组相等,即使维数或下标范围不同。)

如果一个数组的每个元素都出现在另一个数组中,则数组包含运算符 (<@@>) 会认为一个数组包含在另一个数组中。重复项不会被特殊处理,因此ARRAY[1]ARRAY[1,1]被认为包含另一个。

有关数组运算符行为的更多详细信息,请参阅第 8.15 节。有关哪些运算符支持索引操作的更多详细信息,请参阅第 11.2 节。

表 9.49显示了可用于数组类型的函数。有关使用这些函数的更多信息和示例,请参阅第 8.15 节。

表 9.49。数组函数

功能 返回类型 描述 例子 结果
array_append(anyarrayanyelement) anyarray 将一个元素追加到数组末尾 array_append(ARRAY[1,2], 3) {1,2,3}
array_cat(anyarrayanyarray) 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(anyelementint[] [, int[]]) anyarray 返回一个使用提供的值和维度进行初始化的数组,可以选择使用除 1 之外的下限 array_fill(7, ARRAY[3], ARRAY[2]) [2:4]={7,7,7}
array_length(anyarrayint) int 返回请求的数组维度的长度 array_length(array[1,2,3], 1) 3
array_lower(anyarrayint) int 返回所请求数组维度的下限 array_lower('[0:2]={1,2,3}'::int[], 1) 0
array_position(anyarrayanyelement [, int]) int 返回数组中第二个参数第一次出现的下标,从第三个参数指示的元素或第一个元素开始(数组必须是一维的) array_position(ARRAY['sun','mon','tue','wed','thu','fri','sat'], 'mon') 2
array_positions(anyarrayanyelement) int[] 返回作为第一个参数给出的数组中第二个参数的所有出现的下标数组(数组必须是一维的) array_positions(ARRAY['A','A','B','A'], 'A') {1,2,4}
array_prepend(anyelementanyarray) anyarray 将一个元素追加到数组的开头 array_prepend(1, ARRAY[2,3]) {1,2,3}
array_remove(anyarrayanyelement) anyarray 从数组中删除所有等于给定值的元素(数组必须是一维的) array_remove(ARRAY[1,2,3,2], 2) {1,3}
array_replace(anyarrayanyelementanyelement) anyarray 用新值替换等于给定值的每个数组元素 array_replace(ARRAY[1,2,5,4], 5, 3) {1,2,3,4}
array_to_string(anyarraytext [, text]) text 使用提供的分隔符和可选的空字符串连接数组元素 array_to_string(ARRAY[1, 2, 3, NULL, 5], ',', '*') 1,2,3,*,5
array_upper(anyarrayint) int 返回所请求数组维度的上限 array_upper(ARRAY[1,8,3,7], 1) 4
cardinality(anyarray) int 返回数组中元素的总数,如果数组为空则返回 0 cardinality(ARRAY[[1,2],[3,4]]) 4
string_to_array(texttext [, text]) text[] 使用提供的分隔符和可选的空字符串将字符串拆分为数组元素 string_to_array('xx~^~yy~^~zz', '~^~', 'yy') {xx,NULL,zz}
unnest(anyarray) setof anyelement 将数组扩展为一组行 unnest(ARRAY[1,2])
<span style="color:#212529"><span style="color:var(--doccontent-table-td-fg-color)"><span style="color:var(--doccontent-pre-code-fg-color) !important"><span style="background-color:var(--doccontent-pre-code-bg-color)">1
2</span></span></span></span>
(2 行)
unnest(anyarrayanyarray [, ...]) setof anyelement, anyelement [, ...] 将多个数组(可能是不同类型的)扩展为一组行。仅在 FROM 子句中允许这样做;参见第 7.2.1.4 节 unnest(ARRAY[1,2],ARRAY['foo','bar','baz'])
<span style="color:#212529"><span style="color:var(--doccontent-table-td-fg-color)"><span style="color:var(--doccontent-pre-code-fg-color) !important"><span style="background-color:var(--doccontent-pre-code-bg-color)">1 富
2巴
空巴兹</span></span></span></span>
(3行)

array_position和中array_positions,使用语义将每个数组元素与搜索值进行比较IS NOT DISTINCT FROM

在 中array_positionNULL如果未找到该值,则返回。

In array_positions,NULL仅当数组为NULL;时才返回 如果在数组中找不到该值,则返回空数组。

在 中string_to_array,如果 delimiter 参数为 NULL,则输入字符串中的每个字符将成为结果数组中的单独元素。如果分隔符为空字符串,则整个输入字符串将作为单元素数组返回。否则,输入字符串会在每次出现分隔符字符串时被分割。

在 中string_to_array,如果省略空字符串参数或为 NULL,则输入的任何子字符串都不会被 NULL 替换。在 中array_to_string,如果空字符串参数被省略或为 NULL,则将简单地跳过数组中的任何空元素,并且不会在输出字符串中表示。

参考官方文档:https://www.postgresql.org/docs/10/functions-array.html

其他问题:

异常:

Postgresql:nested exception:operator does not exist: text[] @> character varying[]
原文异常情况链接:https://blog.csdn.net/GodSure0914/article/details/116123770

处理方法:

强转::TEXT[] 类型。文章来源地址https://www.toymoban.com/news/detail-743625.html

到了这里,关于postgresql数组重叠(有共同元素)查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据库】PostgreSQL中使用`SELECT DISTINCT`和`SUBSTRING`函数实现去重查询

    在PostgreSQL中,我们可以使用 SELECT DISTINCT 和 SUBSTRING 函数来实现对某个字段进行去重查询。本文将介绍如何使用这两个函数来实现对 resource_version 字段的去重查询。 1. SELECT DISTINCT 语句 SELECT DISTINCT 语句用于从表中选择不重复的记录。如果没有指定列名,则会选择所有列。在本

    2024年02月14日
    浏览(44)
  • Postgresql JSON对象和数组查询

    1.1 简单查询(缺陷:数组必须指定下标,不推荐) 1.1.1 模糊查询 address字段是JSONArray类型,所以在路径中,使用数字索引来访问数组元素,从 0 开始计数。 1.1.2 等值匹配 如果字段是 int 类型,后面需要添加 ::int 1.1.3 时间搜索 1.1.4 在列表 1.1.5 包含 # :获取在指定路径的 JSON 对象

    2024年02月10日
    浏览(55)
  • c# 从零到精通 数据库 定义LINQ查询表达式,从数组中查找长度小于7的所有项

    c# 从零到精通 数据库 定义LINQ查询表达式,从数组中查找长度小于7的所有项 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace LINQQuery { class Program { static void Main(string[] args) { //定义一个字符串数组 string[] strName = new string[] { “明日科技”,“C#编程词典”

    2024年02月10日
    浏览(48)
  • PHP8中查询数组中指定元素-PHP8知识详解

    php是使用最广泛的web编程语言,数组是一个数据集合,数组是一种非常常用的数据类型。在操作数组时,有时我们需要查询数组中是否有某个指定元素。在实际的程序开发中,我们用到了下列方法来查询数组中指定的元素:使用array_search()函数、使用array_column()函数、使用in

    2024年02月09日
    浏览(62)
  • 东方国信携手天翼云,共同打造基于CirroData分布式数据库的自主可信云平台

    近日,中国电信天翼云科技有限公司与北京东方国信科技股份有限公司共同完成了对CirroData分布式数据库与天翼云基于信创国产化平台适配的联合测试,认证CirroData数据库与天翼云能够满足功能、性能和可靠性的要求,相互兼容良好,可稳定运行。

    2024年02月16日
    浏览(49)
  • 南大通用GBase 8c数据库与泛微软件完成互认证 共同搭建统一数字化办公平台

    日前,南大通用分布式交易型数据库GBase 8c与泛微协同商务软件“e-cology” V9.0顺利完成产品兼容性测试,双方产品完全兼容,整体运行稳定,性能卓越。完成适配后,双方将充分发挥在各自领域的专业优势,坚持以客户需求为基础,助力国产化办公平台实现数字化转型,更好

    2024年02月13日
    浏览(45)
  • Selenium的WebDriver操作页面的超时或者元素重叠引起的ElementClickInterceptedException

    处理由页面加载引起的超时是在使用 Selenium 进行自动化测试中常见的任务。页面加载可能因网络速度慢、页面复杂性或异步操作而导致超时。以下是一些处理页面加载超时的方法: 1.设置隐式等待时间: 使用 implicitly_wait 方法可以设置隐式等待时间,让 Selenium 等待一定时间

    2024年02月07日
    浏览(40)
  • 【PostgreSQL】数据查询-概述

    检索或从数据库中检索数据的命令的过程称为查询。在 SQL 中,SELECT 命令用于指定查询。该命令的一般语法是SELECT 一种简单的查询形式为: 假设有一个名为table1的表,此命令将从table1中检索所有行和所有用户定义的列。(检索方法取决于客户端应用程序。例如*,psql 程序将

    2024年01月23日
    浏览(51)
  • 【LeetCode】1031. 两个非重叠子数组的最大和

      给你一个整数数组  nums  和两个整数  firstLen  和  secondLen ,请你找出并返回两个非重叠  子数组  中元素的最大和 , 长度分别为  firstLen  和  secondLen  。 长度为  firstLen  的子数组可以出现在长为  secondLen  的子数组之前或之后,但二者必须是不重叠的。 子数组是数

    2024年02月01日
    浏览(31)
  • PostgreSQL Linux操作PostgreSQL数据库

    PostgreSQL教程 菜鸟教程:https://www.runoob.com/postgresql/postgresql-tutorial.html 登录PG数据库:psql -U 用户名(U需要大写) 登录PG数据库(指定主机、端口,并进入指定数据库): psql -U 用户名 -h 127.0.0.1 -p 5432 -d 数据库名 -U 登录的用户名 -h 连接的主机(默认127.0.0.1,可替换成远程主机

    2024年02月11日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包