postgresql ARRAY ALLOF 和 ANYOF 条件
postgresql ARRAY ALLOF and ANYOF conditions
我有以下 Postgresql 记录:
CREATE TABLE People (Name TEXT, Languages TEXT[]);
INSERT INTO People Values ('BillG', ARRAY['English', 'French', 'Tamil']);
INSERT INTO People Values ('SteveJ', ARRAY['English', 'Spanish']);
INSERT INTO People Values ('WarrenB', ARRAY['English', 'French', 'Spanish']);
SELECT Name FROM People WHERE Languages @> ARRAY['English', 'French'];
现在 SELECT 声明 returns 'BillG' 和 'WarrenB' 因为这两个是唯一会说 'English' 和 'French'.但是,如果我想 return 所有会说这两种语言中的任何一种(不一定都是两种)的人,我该如何实现?
我试过了:
SELECT Name FROM People WHERE ARRAY['English', 'French'] @> Languages;
但是 return 是零条记录,而不是我想要的所有记录。我似乎模糊地理解为什么第二个 SELECT 查询可能会失败,但我无法理解如何让所有会说我给出的数组中的任何语言的人。有帮助吗?
使用 &&
(重叠)运算符代替 @>
(包含)运算符:
SELECT Name
FROM People
WHERE Languages && ARRAY['English', 'French'];
┌─────────┐
│ name │
├─────────┤
│ BillG │
│ SteveJ │
│ WarrenB │
└─────────┘
(3 rows)
我有以下 Postgresql 记录:
CREATE TABLE People (Name TEXT, Languages TEXT[]);
INSERT INTO People Values ('BillG', ARRAY['English', 'French', 'Tamil']);
INSERT INTO People Values ('SteveJ', ARRAY['English', 'Spanish']);
INSERT INTO People Values ('WarrenB', ARRAY['English', 'French', 'Spanish']);
SELECT Name FROM People WHERE Languages @> ARRAY['English', 'French'];
现在 SELECT 声明 returns 'BillG' 和 'WarrenB' 因为这两个是唯一会说 'English' 和 'French'.但是,如果我想 return 所有会说这两种语言中的任何一种(不一定都是两种)的人,我该如何实现?
我试过了:
SELECT Name FROM People WHERE ARRAY['English', 'French'] @> Languages;
但是 return 是零条记录,而不是我想要的所有记录。我似乎模糊地理解为什么第二个 SELECT 查询可能会失败,但我无法理解如何让所有会说我给出的数组中的任何语言的人。有帮助吗?
使用 &&
(重叠)运算符代替 @>
(包含)运算符:
SELECT Name
FROM People
WHERE Languages && ARRAY['English', 'French'];
┌─────────┐
│ name │
├─────────┤
│ BillG │
│ SteveJ │
│ WarrenB │
└─────────┘
(3 rows)