Как исключить регулярное выражение из значения поля таблицы MySql?
Пожалуйста, помогите нубу в MySQL
У меня есть плагин для сайта на движке Livestreet CMS, плагин показывает рекламные баннеры на страницах сайта.
В одной из таблиц плагина в БД можно задать шаблоны URL-адресов, чтобы баннер выводился лишь на определенных страницах. Задаются они примерно так:
% - все страницы сайта
%/blog/% - только на страницах блогов и т.д.
Вопрос в следующем. Какое условие надо вписать в это поле для того, чтобы баннер выводился на всех страницах, за исключением определенных страниц, на которых баннеры не нужны, например, включающие в путь URL выражения /test1/ и/или /test2/
Уверены, что там регулярка?
%/blog/% - это характерно для like, а не regexp
А like умеет только два спецсимвола - _ (один любой символ) и % (любое количество символов), чего для вашей задачи совершенно недостаточно, если не вмешиваться в код.
@Melkij все-таки замена на regexp работает без проблем и на другую часть кода не влияет. но в синтаксисе этого оператора я разобраться не сумел. я так понимаю, что для указания любой страницы нужно поставить точку . , а как добавить к этому условию исключение - /profile/ ?
@Melkij да, я уже пробовал так делать, в not regexp собирался вписать что-то вроде (/test1/)|(/test2/)|(/test3/) и так далее, все страницы, которые нужно исключить.
Но не слишком ли тяжеловесный процесс получится в итоге? Ведь regex хорошо озадачивает систему.
Опять же, надо смотреть логику. Если реализовано не слишком... ммм, своеобразно... то этот запрос ограничен текущим документом, т.е. в выборке в худшем случае только одна строка. А одну строку проверить ничего не стоит.