arrays - PostgreSQL 使用位置数组访问数组中的多个元素
问题描述
我想知道在 PostgreSQL 中是否可以通过使用另一个指示一系列元素位置的数组来从数组的多个元素中输出一个数组。
准确地说:
array1 = [1,2,1]
array_positions(array1,'1') = {1,3}
array2 = ['hello', 'bye', 'hello']
期望的结果:
array2[array_positions(array1,'1')] = {'hello', 'hello'}
我收到ERROR: array subscript must have type integer
任何建议?
解决方案
这可能会或可能不会太复杂而无法使用,但它确实证明了它是可能的:
SELECT vals.*
FROM (
VALUES(array['hello', 'bye', 'hello'])
) AS t (arr)
JOIN lateral unnest(t.arr) WITH ORDINALITY AS vals(element, idx) ON TRUE
WHERE vals.idx = ANY(array_positions(array[1,2,1], 1));
推荐阅读
- android - RxJava 将多个单个结果与给定对象组合
- python - Django - 为锦标赛创建模型
- c - 用c语言计算输入数字的总和
- flutter - 基于系统明暗模式的动态主题变化
- php - 当相关表一无所获时,Eloquent 使查询返回 null
- flutter - 如何让横向在颤动中只旋转一个选定的页面
- python - 在 txt 文件中打印二维数组仅保存最后一行 - .join 的使用不正确?
- azure - Azure.Cosmos 还是 Microsoft.Azure.Cosmos、Azure.Storage.Blob 还是 Microsoft.Azure.Storage.Blob?适用于 .NET Core 3.1
- html - 我怎样才能看到 li hover w?
- html - 在 MaterializeCSS 中垂直对齐并排列