代码之家  ›  专栏  ›  技术社区  ›  Sankar

postgresql数组ALLOF和ANYOF条件

  •  0
  • Sankar  · 技术社区  · 7 年前

    我有以下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 Name FROM People WHERE ARRAY['English', 'French'] @> Languages;
    

    但这会返回零个记录,而不是我想要的所有记录。我似乎模糊地理解了为什么第二个SELECT查询可能会失败,但我无法理解如何找到我给出的数组中所有会说任何语言的人。有什么帮助吗?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Marth    7 年前

    使用 && (重叠)运算符,而不是 @>

    SELECT Name 
    FROM People 
    WHERE Languages && ARRAY['English', 'French'];
    ┌─────────┐
    │  name   │
    ├─────────┤
    │ BillG   │
    │ SteveJ  │
    │ WarrenB │
    └─────────┘
    (3 rows)