Экранирование специальных символов в SQL
Есть ли простой способ в Oracle избежать специальных символов в инструкции SQL? (т. е.%,&,') я видел эту ссылку в отношении ручного экранирования символов, но я подумал, что Oracle, возможно, предоставил более простой способ сделать это.
Примечание: Я создаю динамические инструкции SQL select через ORM.
3 ответа:
При использовании переменных bind и ORM встроенные одинарные кавычки и амперсанды должны передаваться автоматически; это специальные символы в SQL * Plus или SQL*Developer.
Чтобы использовать LIKE where для поиска буквенных символов % и _ (а не их многозначных и односимвольных подстановочных знаков), вы бы использовали предложение
escape
Условияlike
:select * from my_table where some_text like '/%%' escape '/';
Вернет только строки, где some_text начинается со знака процента.
Похоже, вы ищете что-то вроде команды SET DEFINE OFF, которую можно запустить, и она влияет на весь сеанс SQL. Эта команда, однако, только мешает Oracle придать особое значение символу амперсанда. Он не влияет на другие специальные символы, такие как одинарная кавычка.
Пара ссылок на дополнительную информацию, касающуюся экранирования символов следуйте:
Https://forums.oracle.com/forums/thread.jspa?threadID=2256637
Http://docs.oracle.com/cd/B10501_01/text.920/a96518/cqspcl.htm