如何检查,(值)在postgres sql(数组)中吗?

How to check, is (value) in postgres sql (array)?

提问人:Dmitrii 提问时间:10/13/2023 最后编辑:SelVaziDmitrii 更新时间:10/13/2023 访问量:93

问:

我在 SQL 中有一个数组,例如

CREATE TABLE Table1 (
examples text ARRAY);

INSERT INTO Table1 
(examples)
VALUES
{t1,t2,t3};

我找不到正确语法的描述来做例子 我尝试了教程示例,但它不起作用,或者我只是不明白某些东西select * from Table1 where (values) in (any\some)

select *
from player_scores
where 95 < any (round_scores);

我是否正确理解你需要做这样的事情——

Postgresql 选择列 = 数组或 this 的行 - 如何检查 Postgres 中数组的任何字段是否不包含子字符串?

SELECT * FROM Table1 WHERE "value" = any (examples); 
sql postgresql 选择

评论

0赞 SelVazi 10/13/2023
您需要使用单引号而不是双引号 dbfiddle.uk/oiD2UpVP
0赞 Dmitrii 10/13/2023
做!从表 1 中选择 *,其中 'VALUE' = ANY(示例)
0赞 Zufar Sunagatov 10/13/2023
@Dmitrii让我知道下面的解决方案适合您

答:

1赞 Albina 10/13/2023 #1

DB 小提琴

您的查询应为:

select *
from player_scores
where '95' = ANY(round_scores);

你也可以检查这个答案

0赞 Zufar Sunagatov 10/13/2023 #2

如何检查,(值)在postgres sql(数组)中吗?

是的,这是正确的。如果要检查某个值是否在PostgreSQL数组中,可以使用 function 。 如果数组中存在该值,则返回 true,否则返回 false。ANY()ANY()

此外,在 PostgreSQL 中使用数组时,您需要使用单引号而不是双引号。原因是期望数组元素括在单引号中:ANY()ANY()

SELECT * FROM player_scores WHERE '95' = ANY(round_scores);