Встала такая задача. Есть база данных существующего интернет-магазина (движок Web Asyst Shop Script) с шинами, и там в поле name_ru содержатся шины со всеми своими параметрами (в цепочке к заказчику я не успел рассказать, что параметры следует хранить в других таблицах). Теперь нужно организовать фильтр по нескольким параметрам именно по этому полю. Выглядят поля примерно так: Код (Text): Шины Barum Norpolaris 185/70R14 88Q , собственно, часть строки, которую мне нужно отфильтровать - это 185/70R14. Пока дело не доходит до того, что стоит за буквой R, в принципе, справляется такое условие в запросе: SC_products.name_ru RLIKE '.*[:digit:]*/[:digit:]*R?[:digit:]*.*'. Соответственно, некоторые части условия заменяются на нужный параметр, к примеру SC_products.name_ru RLIKE '.*165/[:digit:]*R?[:digit:]*.*' или SC_products.name_ru RLIKE '.*[:digit:]*/70R?[:digit:]*.*'. Но вот стоит задать к примеру так: SC_products.name_ru RLIKE '.*[:digit:]*/[:digit:]*R?14.*', и MySQL возвращает пустой результат. Можно ли как-то сделать, чтоб срабатывали все части этого шаблона? Пока нашёл временное решение, убрав из шаблона для MySQL часть с R?[:digit:]* и отметая ненужные мне значения после выполнения SQL-запроса средствами PHP, но мне это не совсем нравится, хоть и работает. P.S. Знаю, что не лучшая организация базы данных, не надо мне об этом писать ещё раз. Проблема в том, что из-за того, что я не контактирую с заказчиком напрямую, он уже поспешил наполнить базу данных таким вот образом
Синтаксис неправильный: '[[:digit:]]+/[[:digit:]]+R?14' + - если цифры должны быть обязательно; * - могут и не быть
Ещё один вопрос: как в регулярках MySQL подставлять специальные символы, такие как '*' bkb '.', если именно они должны быть обнаружены в тексте?