В нашем веб-приложении есть функция поиска, которая работает с Oracle
(версия указана после Oracle10g
), а я создаю запрос SQL
с Java
.
Согласно документации , все, что вы вводите в curly braces {..}
, экранируется. Тем не менее, я хотел бы также выполнить поиск для {
, и когда я пытаюсь найти строку, содержащую {
, это дает мне ошибку org.hibernate.QueryException: Unmatched braces for alias path
, так как она ищет закрывающую скобку.
То, что я пробовал до сих пор;
...query... WHERE ... LIKE lower('%{{%') ESCAPE '{'
...query... WHERE ... LIKE lower('%\{%') ESCAPE '\'
...query... WHERE ... LIKE lower('%{{}%')
...query... WHERE ... LIKE lower('%CHR(123)%')
...query... WHERE ... LIKE lower('%||CHR(123)||%')
Первые два по-прежнему вызывают ошибку. Другие не вызывают ошибок, но не возвращают результаты, содержащие {
. Есть ли обходной путь для этой ситуации?
PS: я не могу использовать подготовленный оператор, так как в запросе есть части легенды. К сожалению, его нужно создавать вручную, используя строки.
PS2: с закрывающей скобкой проблем нет }