gpt4 book ai didi

sql - 在 WHERE 子句中搜索记录数组

转载 作者:行者123 更新时间:2023-11-29 12:44:28 27 4
gpt4 key购买 nike

我有一组记录。记录类似于 (id, text_value)

我想在 WHERE 子句中进行搜索。我想在记录数组中包含具有特定值的行。但是,例如函数 ANY 似乎将相等性作为单个值。例如:

WHERE 'one' = ANY('{one,two}'::text[])

然而,我的子句是ANY(array_of_records)。因此,左侧需要访问记录中的列。

这在 WHERE 子句中是否可行,或者我应该使用 plpgsql 循环遍历行?

如果有帮助,我也很乐意使用 jsonjsonb 进行任何记录数组搜索。

最佳答案

只需取消嵌套数组并将其连接到您的表中。我将对您的模式做出一些假设...这是您所指的记录,您可以从中创建数组 r[]:

CREATE TYPE r AS (
id INT,
text_value TEXT
);

这是包含您要在记录数组中搜索的值的表:

CREATE TABLE t(v) AS
VALUES ('a'), ('b'), ('c'), ('d');

现在,简单地加入两者:

SELECT *
FROM t
JOIN unnest(array[row(1, 'a')::r, row(2, 'b')::r]) u
ON t.v = u.text_value

这会产生

v  id  text_value
-----------------
a 1 a
b 2 b

关于sql - 在 WHERE 子句中搜索记录数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32317079/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com