我有以下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语句返回'BillG'和'WarrenB',因为这两个是唯一同时说'英语'和'法语'的人。但是,如果我想要回复所有说两种语言中的任何一种语言的人(并不一定都是两种语言),我该如何实现呢?
我试过了:
SELECT Name FROM People WHERE ARRAY['English', 'French'] @> Languages;
但是返回零记录而不是我想要的所有记录。我似乎模糊地理解为什么第二个SELECT查询可能会失败,但我无法理解如何让所有能够说出我给出的数组中任何语言的人。有什么帮助吗?
答案 0 :(得分:0)
使用&&
(重叠)运算符代替@>
(包含)运算符:
SELECT Name
FROM People
WHERE Languages && ARRAY['English', 'French'];
┌─────────┐
│ name │
├─────────┤
│ BillG │
│ SteveJ │
│ WarrenB │
└─────────┘
(3 rows)