news 2026/6/10 0:27:20

在postgres和duckdb中比较两个数组并只挑选不匹配的元素

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
在postgres和duckdb中比较两个数组并只挑选不匹配的元素

直接用-运算符是不行的, 网上用AI生成的文档很不负责地误导大家。

select array[1,2]-array[1]; 错误: 操作符不存在: integer[] - integer[] 第1行select array[1,2]-array[1]; ^ 提示: 没有匹配指定名称和参数类型的操作符. 您也许需要增加明确的类型转换.

duckdb 也会报错

select [1,2] -[1]; Binder Error: No function matches the given name and argument types '-(INTEGER[], INTEGER[])'. You might need to add explicit type casts.

文档中有array_remove函数,但一次只能删除一个元素

postgres=# select array_remove(ARRAY[1,2,3,2], 2); array_remove -------------- {1,3}

还是人类的回答靠谱, 将数组转成表的行,再用array()函数转回来。

postgres=# select unnest(array[1,2,3]) except select unnest(array[1,2]); unnest -------- 3 (1 行记录) postgres=# select array(select unnest(array[1,2,3]) except select unnest(array[1,2])); array ------- {3} (1 行记录)

此法在duckdb也可以用

select array(select unnest(array[1,2,3]) except select unnest(array[1,2])); ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ (SELECT CASE WHEN ((array_agg(COLUMNS(*)) IS NULL)) THEN (list_value()) ELSE array_agg(COLUMNS(*)) END FROM ((SEL… │ │ int32[] │ ├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ [3] │ └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

除了上面的方法,duckdb还可以用list_filter配合contains函数。

select list_filter([3, 4, 5], lambda x : not contains([2,4],x )); ┌─────────────────────────────────────────────────────────────────────────────────────────────┐ │ list_filter(main.list_value(3, 4, 5), (lambda x: (NOT contains(main.list_value(2, 4), x)))) │ │ int32[] │ ├─────────────────────────────────────────────────────────────────────────────────────────────┤ │ [3, 5] │ └─────────────────────────────────────────────────────────────────────────────────────────────┘
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/5 10:35:01

如何5分钟快速部署AI自动瞄准神器:终极游戏辅助配置指南

想要在热门射击游戏中获得精准的自动瞄准能力吗?AI Aimbot 是一款革命性的开源AI自动瞄准工具,通过先进的YOLOv5目标检测技术,为CS2、Valorant、Fortnite、APEX等主流游戏提供智能瞄准辅助。这款世界顶级的AI瞄准神器能够实时识别游戏中的敌方…

作者头像 李华
网站建设 2026/6/9 18:50:12

一文说清工业环境中RS485通讯的稳定性问题

工业RS485通信为何总“抽风”?一文讲透稳定性背后的硬核设计 在某水泥厂的自动化控制室里,工程师正盯着SCADA系统——十几个温度传感器的数据突然开始跳变,甚至集体掉线。排查了一圈,PLC没坏、程序正常、供电稳定……最后发现&…

作者头像 李华
网站建设 2026/6/9 18:50:18

Typora插件优化指南:打造个性化写作环境的终极方案

Typora插件优化指南:打造个性化写作环境的终极方案 【免费下载链接】typora_plugin Typora plugin. feature enhancement tool | Typora 插件,功能增强工具 项目地址: https://gitcode.com/gh_mirrors/ty/typora_plugin Typora作为一款优秀的Mark…

作者头像 李华
网站建设 2026/6/9 20:05:19

33、社交媒体与视频图像的SEO策略

社交媒体与视频图像的SEO策略 1. 社交媒体内容分析与SEO价值 1.1 Twitter消息类型占比 对公开的Twitter消息进行分析后发现,其消息类型占比如下: | 消息类型 | 占比 | | ---- | ---- | | 无意义闲聊 | 40.6% | | 对话消息 | 37.6% | | 转发消息 | 8.7% | | 主流媒体新…

作者头像 李华
网站建设 2026/6/9 16:43:26

Dify平台能否接入Notion数据库实现内容自动同步?

Dify平台能否接入Notion数据库实现内容自动同步? 在企业加速智能化转型的今天,一个现实而普遍的问题浮出水面:业务团队习惯用 Notion 管理产品文档、客户案例和内部知识库,而AI应用却常常依赖静态、滞后甚至手动维护的知识源。结果…

作者头像 李华
网站建设 2026/6/5 10:20:25

OrCAD在工业传感器接口设计中的实践应用

工业传感器接口设计实战:OrCAD 如何重塑高可靠性电路开发流程你有没有遇到过这样的场景?一个工业温度传感器的输出信号在实验室里稳定精准,可一旦装进现场控制柜,数据就开始跳动、漂移,甚至完全失真。排查半天&#xf…

作者头像 李华