news 2026/2/25 18:11:51

在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/2/19 8:31:45

CompressO终极视频压缩工具安装全攻略

想要将大体积视频快速压缩到极小尺寸吗?CompressO这款开源跨平台工具正是你的最佳选择!它基于强大的FFmpeg技术,能够在完全离线状态下实现高效视频压缩。无论你是内容创作者、视频编辑师还是普通用户,这份完整安装指南将带你快速上…

作者头像 李华
网站建设 2026/2/22 20:42:02

19、网站内容获取与版权使用全攻略

网站内容获取与版权使用全攻略 在当今数字化时代,拥有丰富且优质的内容对于网站的成功至关重要。无论是提升搜索引擎排名,还是吸引和留住用户,内容都是关键因素。本文将详细介绍多种获取网站内容的途径,同时强调版权问题的重要性,帮助你合法、高效地为网站增添有价值的内…

作者头像 李华
网站建设 2026/2/20 10:36:08

25、网站推广与产品搜索的全面指南

网站推广与产品搜索的全面指南 在当今数字化的时代,让网站获得更多曝光和推广产品是许多人关注的重点。下面将为大家详细介绍网站推广的相关途径以及产品搜索的常见渠道。 网站推广相关 搜索引挚非常青睐指向你网站的链接,拥有这些链接往往是让网站进入搜索引挚的最佳方式…

作者头像 李华
网站建设 2026/2/17 6:39:23

30、网站链接分析与生成全攻略

网站链接分析与生成全攻略 在当今数字化的时代,网站的链接建设对于提高网站的可见性和排名至关重要。本文将详细介绍如何进行链接分析以及多种生成链接的方法,帮助你提升网站在搜索引擎中的表现。 链接分析方法 在开展链接建设工作之前,了解谁已经在链接到你的网站,或者…

作者头像 李华
网站建设 2026/2/24 18:53:10

35、搜索引擎搜索结果优化与惩罚应对全攻略

搜索引擎搜索结果优化与惩罚应对全攻略 在当今数字化时代,搜索引擎是人们获取信息的重要途径,网站在搜索结果中的排名直接影响着其流量和业务。本文将深入探讨如何在搜索结果页面获得多个结果,以及当网站受到谷歌惩罚时该如何应对。 搜索结果中融入 Twitter 内容 主要的搜…

作者头像 李华
网站建设 2026/2/21 18:38:27

如何用iNSFC LaTeX模板3步完成NSFC申请:终极格式解决方案

如何用iNSFC LaTeX模板3步完成NSFC申请:终极格式解决方案 【免费下载链接】iNSFC An awesome LaTeX template for NSFC proposal. 项目地址: https://gitcode.com/gh_mirrors/in/iNSFC 国家自然科学基金申请过程中的格式调整往往耗费研究者大量宝贵时间。从字…

作者头像 李华