Недавно мы перешли с MySQL на PostgreSQL. Большинство запросов были переведены, за исключением запросов с ключевым словом REGEXP в Mysql:
MySQL (prepared statement):
SELECT * FROM table WHERE ? REGEXP identifier;
У нас есть «таблица», и один из столбцов называется «идентификатор». Этот столбец «идентификатор» содержит фактический шаблон регулярного выражения.
Таким образом, вместо «жесткого кодирования» шаблона регулярного выражения в запросе он ищет столбец идентификатора для шаблона.
В Postgresql нам нужно использовать ключевое слово «~» вместо «REGEXP» (только для MySQL), но с Postgresql я не могу извлечь шаблон из столбца.
Я безуспешно пробовал следующие запросы:
SELECT * FROM table WHERE 'test' ~ "identifier";
ERROR: invalid regular expression: parentheses () not balanced
SELECT * FROM table WHERE "identifier" ~ 'test';
-> no results
в целях тестирования я создал ряд записей, в которых столбец «идентификатор» содержит «.*» в качестве значения (регулярное выражение для совпадения всего), но все же я не получаю соответствующего результата.
Помощь очень приветствуется, спасибо!