当前位置: 首页 > news >正文

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返回数组中元素的总数,如果数组为空则返回 0cardinality(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[] 类型。

相关文章:

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

直接上最终代码&#xff1a; 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语法&#xff1a; 表 9.48显示了可用于数组类型的运算符。 表 9.48。数组运算符…...

ubuntu系统 生成RSA密钥对

在Ubuntu系统上生成密钥对通常指的是生成SSH密钥对&#xff0c;它常用于安全的远程登录、数据通信和其他安全网络操作。以下是如何在Ubuntu系统上生成SSH密钥对的步骤&#xff1a; 打开终端&#xff1a;你可以使用快捷键 Ctrl Alt T 在Ubuntu上打开一个终端窗口。 运行ssh-k…...

【RtpSeqNumOnlyRefFinder】webrtc m98: ManageFrameInternal 的帧决策过程分析

Jitterbuffer(FrameBuffer)需要组帧以后GOP内的参考关系 JeffreyLau 大神分析 了组帧原理而参考关系(RtpFrameReferenceFinder)的生成伴随了帧决策 FrameDecisionFrameDecision 影响力 帧的缓存。调用 OnAssembledFrame 传递已经拿到的RtpFrameObject 那么,RtpFrameObject…...

centos系统源码编译安装nginx,并编写服务脚本

1.安装编译所需的依赖项&#xff1a; yum install -y gcc pcre-devel openssl-devel zlib-devel2.下载 Nginx 源代码&#xff1a; wget http://nginx.org/download/nginx-1.21.3.tar.gz tar -xf nginx-1.21.3.tar.gz cd nginx-1.21.33.配置编译选项并进行编译和安装&#xff…...

2023下半年软考高项答题技巧!

2023下半年软考倒计时最后一天&#xff0c;一些软考高项答题技巧分享&#xff01; 高项答题技巧 1、综合知识 &#xff08;1&#xff09;首先是分析试题的技巧 –先看清楚问题&#xff0c;再看选项&#xff1b; –判断题目到底考察的是什么知识点&#xff0c;排除干扰项。…...

windows server 2016调优

1. 增加TCP连接的最大数量&#xff1a; 在您当前的注册表路径&#xff08;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters&#xff09;中的右侧窗格&#xff0c;右击空白处&#xff0c;选择“新建” -> “DWORD (32位) 值”。为新的值命名为TcpNu…...

Qt 插件开发详解

1.简介 Qt插件是一种扩展机制&#xff0c;用于将应用程序的功能模块化&#xff0c;并且可以在运行时动态加载和卸载。Qt框架为插件提供了一套标准的接口和管理机制&#xff0c;使得插件的使用和集成变得简单和灵活&#xff0c;通过插件机制&#xff0c;可以将应用程序的功能划…...

vue需求:实现签章/签字在页面上自由定位的功能(本质:元素在页面上的拖拽)

目录 第一章 效果展示 第二章 了解工具 2.1 draggable 2.1.1 了解draggable 2.1.2 draggable方法 2.1.3 利用例子理解方法 第三章 效果实现 3.1 实现思路 3.2 代码实现 3.2.1 涉及到的点 3.2.2 源代 第一章 效果展示 效果描述&#xff1a;通过点击左边栏的签名和…...

【深度学习基础】Pytorch框架CV开发(1)基础铺垫

&#x1f4e2;&#xff1a;如果你也对机器人、人工智能感兴趣&#xff0c;看来我们志同道合✨ &#x1f4e2;&#xff1a;不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸对你有帮助&#xff0c;可点赞 &#x1f44d;…...

uniapp原生插件之安卓热敏打印机打印插件

插件介绍 安卓热敏打印机打印插件&#xff0c;自动授权&#xff0c;打印机连接监听&#xff0c;打印文本&#xff0c;条形码&#xff0c;二维码&#xff0c;切纸&#xff0c;打印机状态&#xff0c;打印结果查询等 插件地址 安卓热敏打印机打印插件 - DCloud 插件市场 超级…...

巴菲特:卖比亚迪有助于资金配置

巴菲特表示&#xff0c;未来可能会有更多银行倒闭&#xff0c;但储户不必担心&#xff0c;他警告说&#xff0c;陷入困境的银行股不是价值投资&#xff0c;因为即使政府采取行动保护储户&#xff0c;股东的权益也会受到损失。他称&#xff0c;将加大对日本综合商社的投资&#…...

香港服务器有哪些特点

香港服务器具有以下特点&#xff1a; 速度快&#xff1a;香港服务器地理位置优越&#xff0c;与内地服务器相比&#xff0c;网络延迟更低&#xff0c;访问速度更快。 稳定性高&#xff1a;香港服务器位于全球重要的金融中心&#xff0c;网络环境稳定&#xff0c;服务器稳定性高…...

Leetcode76最小覆盖子串

思路&#xff1a;滑动窗口思想 1. 滑动窗口是什么&#xff1a;用一个滑动窗口为覆盖目标子串的字符串 2.怎么移动窗口&#xff1a;当不满足覆盖时右指针移动扩大范围&#xff0c;当覆盖了就移动左指针缩减范围直到再次不覆盖 3. 怎么判断是否覆盖&#xff1a;这里使用两个哈…...

GD32 单片机 硬件I2C死锁解决方法

死锁的复现方式 在I2C恢复函数下个断点&#xff08;检测到I2C多次超时之后&#xff0c;应该能跳转到I2C恢复函数&#xff09;使用镊子&#xff0c;将SCL与SDA短接&#xff0c;很快就能看到程序停到恢复函数的断点上&#xff0c;此时再执行恢复函数&#xff0c;看能否正常走出&…...

SPSS两相关样本检验

前言&#xff1a; 本专栏参考教材为《SPSS22.0从入门到精通》&#xff0c;由于软件版本原因&#xff0c;部分内容有所改变&#xff0c;为适应软件版本的变化&#xff0c;特此创作此专栏便于大家学习。本专栏使用软件为&#xff1a;SPSS25.0 本专栏所有的数据文件请点击此链接下…...

【vscode远程开发】使用内网穿透实现在公网环境下远程访问

文章目录 前言1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 前言 远程…...

KaiwuDB 内核解析 - SQL 查询的生命周期

一、概述 KaiwuDB 内核解析系列共分上下两部分&#xff0c;本文是该系列的第一部分&#xff0c;主要涵盖了网络协议到 SQL 执行器&#xff0c;解释 KaiwuDB 如何执行 SQL 查询&#xff0c;包括系统各个组件的执行路径&#xff08;网络协议、SQL 会话管理、解析器、执行计划及优…...

2023.11.03 homework

小学4年级数学 1 2 3 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 19…...

ssm在线互助答疑系统-计算机毕设 附源码 20862

ssm在线互助答疑系统 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化&#xff0c;电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流&#xff0c;人类发展的历史正进入一个新时代。在现实运用中&#…...

MySQL中如何书写update避免锁表

1. 什么是MySQL锁表&#xff1f; MySQL锁表是指在对某个数据表进行读写操作时&#xff0c;为了保证数据的一致性和完整性&#xff0c;系统会对该数据表进行锁定&#xff0c;防止其他用户对该表进行操作。 2. 为什么会出现锁表&#xff1f; 当多个用户同时对同一个数据表进行…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

网页端 js 读取发票里的二维码信息(图片和PDF格式)

起因 为了实现在报销流程中&#xff0c;发票不能重用的限制&#xff0c;发票上传后&#xff0c;希望能读出发票号&#xff0c;并记录发票号已用&#xff0c;下次不再可用于报销。 基于上面的需求&#xff0c;研究了OCR 的方式和读PDF的方式&#xff0c;实际是可行的&#xff…...

python打卡第47天

昨天代码中注意力热图的部分顺移至今天 知识点回顾&#xff1a; 热力图 作业&#xff1a;对比不同卷积层热图可视化的结果 def visualize_attention_map(model, test_loader, device, class_names, num_samples3):"""可视化模型的注意力热力图&#xff0c;展示模…...

FTXUI::Dom 模块

DOM 模块定义了分层的 FTXUI::Element 树&#xff0c;可用于构建复杂的终端界面&#xff0c;支持响应终端尺寸变化。 namespace ftxui {...// 定义文档 定义布局盒子 Element document vbox({// 设置文本 设置加粗 设置文本颜色text("The window") | bold | color(…...