Существует сторонняя библиотека для MySQL которая дает возможность использовать PCRE в этом самом MySQL. Находится она вот по этому адресу mysqludf.com/lib_mysqludf_preg
Описывать ее функции я не буду, остановлюсь лишь на одном интересном моменте, который заставил потратить около 30 минут на поиск проблем.
Д опустим у Вас есть некий проект который делает выборки из базы при помощи PREG_CAPTURE, где регулярным выражением является значение в колонке базы, а строкой для проверки некая строка, подставляемая в запрос.
Итого запрос выглядит так:
SELECT something FROM table1 WHERE NOT ISNULL(CONCAT('/',`field1`,'/'),'somemystring')
Работает он прекрасно, выдает данные или не выдает. До того момента как в одном из значений field1 не появится синтаксически не верное и некомпилируемое регулярное выражение.
Пример такого выражения: *something_regexp
Тогда функция PREG_CAPTURE не выдает никаких ошибок, просто ничего не возвращает в ответ, как будто совпадений не было вообще по всем значениям регулярных выражений, а не только по некорректному.
Возможно разработчик библиотеки так и задумывал ее работу, но это доставляет определенные проблемы. Просто будьте осторожны.
Описывать ее функции я не буду, остановлюсь лишь на одном интересном моменте, который заставил потратить около 30 минут на поиск проблем.
Д опустим у Вас есть некий проект который делает выборки из базы при помощи PREG_CAPTURE, где регулярным выражением является значение в колонке базы, а строкой для проверки некая строка, подставляемая в запрос.
Итого запрос выглядит так:
SELECT something FROM table1 WHERE NOT ISNULL(CONCAT('/',`field1`,'/'),'somemystring')
Работает он прекрасно, выдает данные или не выдает. До того момента как в одном из значений field1 не появится синтаксически не верное и некомпилируемое регулярное выражение.
Пример такого выражения: *something_regexp
Тогда функция PREG_CAPTURE не выдает никаких ошибок, просто ничего не возвращает в ответ, как будто совпадений не было вообще по всем значениям регулярных выражений, а не только по некорректному.
Возможно разработчик библиотеки так и задумывал ее работу, но это доставляет определенные проблемы. Просто будьте осторожны.