如何选择所有行,其中包含元素数组的任何元素

时间:2017-09-08 10:38:04

标签: postgresql

我有表帐户,其中包含列tickers_set。 Tickers_set是一种text[],所以它只是一组代码。

E.g。

account| tickers_set
1      | {'aapl', 'f'}
2      | {'gazp', 'lkoh', 'f'}

如果我想查找所有帐号,其中有'f'代码,我会使用select

SELECT * FROM accounts WHERE 'f' = ANY(tickers_set);

但是,当我想要选择所有帐户中有任何元素的帐户时,我该怎么办?假设我想用代码'f'和'gazp'找到所有帐户。

它应该像交叉选择

SELECT * FROM accounts WHERE ['f', 'gazp'] = ANY(tickers_set);

谢谢!

1 个答案:

答案 0 :(得分:2)

这是contains运算符的用途:

SELECT * 
FROM accounts 
WHERE tickers_set @> array['f', 'gazp'];

如果要查找至少其中一个元素的那些元素,可以使用重叠运算符:

SELECT * 
FROM accounts 
WHERE tickers_set && array['f', 'gazp'];