2016-08-09 7 views
0

У меня есть таблица вроде этого:MySQL Где RLIKE любое слово из предложения

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

Как я могу вернуть все записи, где любое слово column1 входит в COLUMN2 с использованием RLIKE заявление? (В этом примере ИД = 1,2,4)

Спасибо

+0

Этот сайт предназначен для программирования вопросов, а не для того, чтобы сваливать «Я хочу, даю». –

+0

@marcB извините! это вопросы программирования:/ –

+0

@MarcB Это вопрос программирования. Однако, правда, вы (Мохамед) должны показать нам, что вы пробовали. Потому что это не сайт, на котором вы можете просто запросить код. – litelite

ответ

1

Попробуйте это:

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

REPLACE заменяет все вхождения '' с '|', который по сути создает регулярное выражение который соответствует строкам, которые содержат любые слова, разделенные пробелами, в column1 (например, «apple | iphone | 6s»).

+0

Ради будущих читателей. Можете ли вы объяснить, почему ваше решение работает. – litelite

+0

@obe спасибо. но это неверно и возвращает только id = 1. потому что «apple iphone» не похож на iphone или apple или 5! –

+0

@MohammadJavadKhademian Вы запустили его? «REPLACE» изменяет пробелы в трубах, которые создают регулярное выражение OR. Я попробовал его с фактической таблицей, и это сработало ... – obe

 Смежные вопросы

  • Нет связанных вопросов^_^