2016-11-03 3 views
0

Мне нужно найти конкретное слово из двух столбцов, но в одном столбце я должен искать символ до *. поэтому я использовал SELECT * FROM table_name WHERE status = 'Enable' AND topic LIKE '%car%' OR category LIKE '%car%', теперь проблема заключается в том, что она возвращает колонку красоты также потому, что в колонке категории есть слово автомобиль e, теперь я должен сделать это, если слово содержит перед первым *, которое оно должно вернуть.MySql WHERE LIKE перед особым символом?

+--------+---------------------------------------------------------------------------+---------+ 
| topic | category                 | status | 
+--------+---------------------------------------------------------------------------+---------+ 
| car | cars & vechicles*cars*             | Enabled | 
+--------+---------------------------------------------------------------------------+---------+ 
| beauty | Fashion, Health & Beauty*Health and Beauty Products*Body Care/Skin Care | Enabled | 
+--------+---------------------------------------------------------------------------+---------+ 
+0

Походит «перед frist * "- это решение, очень специфичное для данных, которые у вас есть сейчас. Что делать, если у вас есть «Уход и красота» как категория в будущем? Или «Оскар-победитель фильмов»? Вы не предпочитаете искать автомобиль или автомобили в целом? – Galz

+0

Кроме того, прочтите следующее: http://dev.mysql.com/doc/refman/5.7/en/regexp.html – Galz

+0

если у него есть «Уход и красота» перед первым * без проблем .. он может вернуть результаты – user466061

ответ

1

Этот запрос должен решить:

SELECT * FROM table_name WHERE 
status = 'Enable' AND topic LIKE '%car%' OR SUBSTRING_INDEX(category,'*',1) LIKE '%car%' 
0

Вы можете сделать простую модификацию запроса путем добавления "% *", как это:

SELECT * FROM table_name WHERE status = 'Enable' AND topic LIKE '%car%' OR category LIKE '%car%*%' 
+0

Это не работает, как ожидалось, для категории: «Мода, здоровье и красота» Уход за телом/Уход за кожей * что-то ». Он не обращается к запросу, чтобы смотреть только перед ** первым ** * – Galz

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

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