2016-09-09 3 views
-3

So muss ich die URLs finden, die das Wort "foo" zum Beispiel enthält. Ich möchte dies mit einer Regex wie SELECT * FROM table WHERE url = regex tun. Die URL ist https//... ODER http://.... und ich muss das Wort foo zum Beispiel in der URL finden. Was ich eigentlich will, ist eine Regex, die überprüft, ob foo im Hostnamen oder im Pfad ist. Danke für die Hilfe!Sql wählen url regex

EDIT:

Ich möchte eine schnellere Alternative mit regex zu finden, weil LIKE '%foo%' auf meinem Tisch sehr langsam ist.

+1

Fügen Sie der Frage die Tabellenstruktur hinzu. – chris85

+0

'id'' url' 'andere unwichtige Information'' img' –

+1

Das sind die Spalten, nicht die Struktur. Fügen Sie die Spaltentypen und Indizes hinzu. Definieren Sie auch 'sehr langsam', Sekunden, Minuten usw. – chris85

Antwort

0

Verwenden Sie LIKE mit dem % Wildcard-Operator.

SELECT * FROM table WHERE url LIKE '%foo%'

+0

Ich habe bereits getan und für die Dimension meiner Tabelle dauert es 2-3 min, um die Abfrage auszuführen ... –

+2

Nun, das wäre eine unglaublich nützliche Information in Ihrem ursprünglichen Beitrag enthalten sein. Sie suchen nicht nach einer Möglichkeit, URLs mit "foo" zu erhalten, wie Ihre Frage sagt, Sie suchen nach einer schnelleren Alternative zu 'LIKE'. Die Quintessenz ist, dass es keinen unglaublich effizienten Weg gibt, um Platzhalterzeichen für Zeichenkettendaten in SQL zu finden. Stellen Sie sicher, dass Ihre Tabelle über einen "FULLTEXT INDEX" verfügt. Im Allgemeinen sind Volltabellen-Scans in MySQL verpönt. – Santi