2016-08-09 4 views
0

Ich habe eine Tabelle wie folgt aus:MySQL Wo RLIKE jedes Wort des Satzes

+-------------+-------------------+----------------+ 
|id   | column1   | column2  | 
+-------------+-------------------+----------------+ 
| 1   | apple iphone 6s | iphone   | 
| 2   | iphone apple 5 | apple iphone | 
| 3   | iphone 4   | samsung  | 
| 4   | iphone 4   | apple iphone 6 | 
+-------------+-------------------+----------------+ 

Wie kann ich alle Datensätze zurück, wo jedes Wort von column1 in column2 mit RLIKE Anweisung enthalten? (In diesem Beispiel id = 1,2,4)

Danke

+0

Diese Seite ist für die Programmierung von Fragen, nicht ein Ort, um "Ich will, gib mir" Forderungen zu entleeren. –

+0

@marcB Entschuldigung! Dies ist eine Programmierfrage:/ –

+0

@MarcB Es ist eine Programmierfrage. Es ist jedoch wahr, dass du (Mohamed) uns zeigen solltest, was du versucht hast. Weil dies keine Website ist, wo Sie einfach nach Code fragen können. – litelite

Antwort

1

Try this:

SELECT * FROM tbl WHERE column2 RLIKE REPLACE(column1, ' ', '|') 

Die REPLACE ersetzt alle Vorkommen von '' mit '|', die im wesentlichen eine Regex erstellt das entspricht Strings, die eines der durch Leerzeichen getrennten Wörter in column1 enthalten (z. B. "apple | iphone | 6s").

+0

Für zukünftige Leser. Können Sie erklären, warum Ihre Lösung funktioniert? – litelite

+0

@obe Danke. aber das ist nicht wahr und gibt nur id = 1 zurück. weil "apple iphone" nicht wie iphone oder apple oder 5 ist! –

+0

@MohammadJavadKhademian Hast du es ausgeführt? Das 'REPLACE' ändert die Leerzeichen in Pipes, die das Regex OR bilden. Ich versuchte es mit einer tatsächlichen Tabelle und es funktionierte ... – obe

Verwandte Themen