从PostgreSQL中的数组中选择以获得所有可能的结果

时间:2019-06-17 13:54:27

标签: sql arrays postgresql

im在docker容器上使用postgresql 11.2,并尝试在包含“ event_type”数组的此列上获取数据:

   event_type
-----------------
 {ERROR}
 {INFO}
 {ERROR,VERBOSE}
 {ERROR,VERBOSE}
 {INFO,NOTIFY}

event_type列模式:

event_type | text[]

选择所有包含“ ERROR”的行:(工作正常)

 SELECT event_type FROM events WHERE event_type @> ARRAY['ERROR'];
   event_type
-----------------
 {ERROR}
 {ERROR,VERBOSE}
 {ERROR,VERBOSE}
(3 rows)

如果我想获取所有包含'ERROR'和\或'NOTIFY'的行:

 SELECT event_type FROM events WHERE event_type @> ARRAY['ERROR', 'NOTIFY'];
 event_type
------------
(0 rows)

所需的响应为:

   event_type
-----------------
 {ERROR}
 {ERROR,VERBOSE}
 {ERROR,VERBOSE}
 {INFO,NOTIFY}

1 个答案:

答案 0 :(得分:3)

您可以使用重叠运算符&&

SELECT event_type FROM events WHERE event_type && ARRAY['ERROR', 'NOTIFY'];

https://www.postgresql.org/docs/current/functions-array.html