регулярное выражение в запросе к MySQL

ACherry

Guest
регулярное выражение в запросе к MySQL

Доброго времени суток!

Наборолся до предела :confused:, решил обратится за помощью к знатокам...

есть выражение для поиска - выводит любую запись где присутствуют все слова поиска в любом порядке

(часть запроса к бд):
PHP:
$QSearch="AND $razdel like '%". str_replace(" ", "%' AND $razdel LIKE '%", $trimmed). "%'";
где:
PHP:
$trimmed
- поисковый запрос
PHP:
$razdel
- текстовые данные в бд

В данном случае если во всей записи хотя бы раз попадутся все слова поискового запроса, то эта запись будет показана.

В случае обычного текста это хорошо даже, а вот применительно к списку, например товаров это уже плохо.

вопрос - как сделать что бы выводились только те записи где все поисковые слова (опять же в произвольном порядке) находятся только в одной строке таблицы? Между тегами <tr> ... </tr> ?

Т.е. что то вроде: <tr>*строка_содержащая_все_слова запроса*</tr> (независимо от регистра тегов и содержимого)

Я нашел немало упоминаний как на регулярных выражениях реализовать это применительно к _одному_ массиву данных/ переменной. Но применить это в запросе Sql воображения и практических навыков не хватает :-/

Спасибо, что дочитали этот бред до конца :)
Заранее спасибо!
 

Кром

Новичок
>вопрос - как сделать что бы выводились только те записи где все поисковые слова (опять же в произвольном порядке) находятся только в одной строке таблицы? Между тегами <tr> ... </tr> ?

Что это еще за извращение такое! Почему списки вместе с кодом лежат в базе? Нужно срочно все это разделить, а не заниматься ерундой.
 

ACherry

Guest
а смысл? просто есть страницы форматированные абзацами (описания), а есть таблицами (некий список), а заносить каждую позицию куда то там никто не будет. Вопрос сводится к сужению поиска ограничивая строкой совпадение по запросу.
 

agx

Программер :-)
используй rlike вместо like
ну и, разумеется, шаблон регулярного выражения POSIX.
 
Сверху