2017-09-08 19 views
0

テーブルの勘定科目があります。列にはtickers_setがあります。 Tickers_setはtext[]のタイプなので、それはちょうどティッカーのコレクションです。要素の配列の任意の要素を持つすべての行を選択する方法

など。のいずれかを持っている

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

私はティッカー「F」を持っているすべてのアカウントを検索したい場合は、私は

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

を選択し使用します。しかし、私はすべてのアカウントを選択したいときに私は何をすべき、配列の要素は?ティッカー 'f'と 'gazp'ですべてのアカウントを検索したいとします。

それは

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

感謝を選択し、交差点のようなものでなければなりません!

答えて

2

これはcontainsオペレータが何のためにあるのかです:

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

あなたは要素の少なくとも 1を持っているものを見つけたい場合は、オーバーラップ演算子を使用することができます

SELECT * 
FROM accounts 
WHERE tickers_set && array['f', 'gazp']; 
関連する問題