Я нахожусь в странной ситуации, когда я должен предотвратить внедрение SQL с помощью строкового запроса, используя REGEXP_LIKE в Oracle.Я не могу использовать подготовленное утверждение из-за проблем с производительностью.Oracle обрабатывает запрос вдвое больше времени, что приводит к превышению времени ожидания в нашей производственной среде при использовании подготовленной версии оператора.
Обычно я бы использовал что-то вроде операторов escape оракула {и}, но в этом случае они имеют значение в регулярном выражении и, похоже, не работают.Кроме одинарных кавычек, что мне нужно остерегаться для случая с регулярным выражением, подобного этому?
Пример запроса
SELECT * FROM table where somecolumn = 2 and regexp_like(column, '\Wmy text\W|\Wfoo\W');
Хотя я видел другие вопросы о ручной защите от внедрения SQL, ни один из них не касался случаев регулярных выражений, подобных этому.
Будет ли сбежать работать так?
SELECT * FROM table where somecolumn = 2 and regexp_like(column, q'[\Wmy text\W|\Wfoo\W]');