gpt4 book ai didi

SQL 查询,它搜索具有数组列的特定项的所有行

转载 作者:行者123 更新时间:2023-11-29 14:27:08 24 4
gpt4 key购买 nike

我在 postgres:9.6 数据库中的 sql 案例

CREATE TABLE my_table (
id serial PRIMARY KEY,
numbers INT []
);

INSERT INTO my_table (numbers) VALUES ('{2, 3, 4}');
INSERT INTO my_table (numbers) VALUES ('{2, 1, 4}');

-- which means --
test=# select * from my_table;
id | numbers
----+---------
1 | {2,3,4}
2 | {2,1,4}
(2 rows)

我需要找到所有带有数字 1 和/或 2 的行。根据this answer我使用这样的查询:

SELECT * FROM my_table WHERE numbers = ANY('{1,2}'::int[]);

出现以下错误:

LINE 1: SELECT * FROM my_table WHERE numbers = ANY('{1,2}'::int[]);
^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.

正确的 sql 查询看起来如何?

最佳答案

使用 var = ANY(array) 可以很好地查找数组中是否包含单个值 (var)。

要检查一个数组是否包含另一个数组的一部分,您可以使用 && operator

&& -- overlap (have elements in common) -- ARRAY[1,4,3] && ARRAY[2,1] --> true

SELECT * FROM my_table WHERE numbers && '{1,2}'::int[];

要检查一个数组是否包含另一个数组的所有成员,您可以使用 @> 运算符

@> -- contains -- ARRAY[1,4,3] @> ARRAY[3,1] --> true

SELECT * FROM my_table WHERE numbers @> '{1,2}'::int[];

关于SQL 查询,它搜索具有数组列的特定项的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56631311/

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