2017-09-08 1 views
0

Ich habe Tabellenkonten, die Spalte tickers_set hat. Tickers_set ist eine Art von text[], also ist es nur eine Sammlung von Tickern.Wie wählt man alle Zeilen aus, die ein beliebiges Element eines Arrays von Elementen haben

z.

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

Wenn ich alle Konten finden wollen, die Ticker ‚f‘ haben, würde ich wählen

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

Aber was soll ich tun, wenn ich alle Konten auswählen möchten, die jeder haben Elemente im Array? Sagen wir, ich möchte alle Konten mit den Tickern 'f' UND 'gazp' finden.

Es sollte so etwas wie Kreuzung

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

Dank wählen sein!

Antwort

2

Dies ist, was der contains Operator ist:

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

Wenn Sie diejenigen, die mindestens eines der Elemente haben, können Sie die Überlappungen Operator finden wollen:

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