2017-07-17 7 views
0

Ich habe eine Datenbank, die Spalten enthält, die Textfelder (Strings, ein paar Sätze lang) und Spalten sind, die kürzere Strings sind (zB: College-Majors). Gibt es eine Möglichkeit, die "LIKE" -Funktion in SQL zu verwenden, um zu suchen, ob einer der Werte der Spalte "College Major" in einer anderen Spalte angezeigt wird?Gibt es eine Möglichkeit, nach Werten einer Spalte in einer anderen Spalte zu suchen?

Ich will nicht als String jeden des College-Majors schreiben, da es mehr als 100.

+0

Bitte erläutern Sie kurz mit Ihrem Code, so dass es leicht zu verstehen und Ihr Problem auch zu lösen wäre. –

+0

Sie wollen also alle möglichen Kombinationen von kurzen Strings agaisnt lange Strings überprüfen, ist das richtig? –

+0

Könnten Sie bitte einige Testdaten zum besseren Verständnis zur Verfügung stellen? Es ist aus der Frage –

Antwort

1

Ja, Sie können. So etwas wie

where bigdatacolumn like '%' + computer_major + '%' 

Da Sie gesagt haben, andere Spalte enthält einige Zeilen (Text Spalte), werden Sie wahrscheinlich mit Full Text Search anstelle der Verwendung zu prüfen, LIKE Operator

+0

als Anmerkung nicht klar, dass man auch einen Join auf die Felder machen könnte. Auch als Hinweis, String Vergleiche werden langsam sein, vor allem mit Gleichen. –

+0

@MarshallTigerus, ja Beitritt der Spalte eine gute Idee, aber Sie müssen die gleiche 'like' Bedingung auf' JOIN ON'-Klausel – Rahul

+0

angeben Ja, ich wollte nicht implizieren, sonst, nur ein weiteres Mittel, um darüber zu gehen. –

0

Verwendung Der ANY-Operator in einem Array zu vergleichen, wie gezeigt in der folgenden Abfrage.

select * from staff where department ILIKE ANY (ARRAY['AUT%', '%COM%' ,'SP%' ] :: TEXT[]); 
Verwandte Themen