Экранирование специальных символов в SQL

есть ли простой способ в Oracle избежать специальных символов в инструкции SQL? (т. е.%,&,') я видел это ссылке что касается ручного экранирования символов, но я думал, что Oracle, возможно, предоставил более простой способ сделать это.

Примечание: я генерирую динамические операторы SQL select через ORM.

3 ответов


при использовании переменных bind и ORM встроенные одинарные кавычки и амперсанды должны передаваться автоматически; это специальные символы в SQL*Plus или SQL*Developer.

чтобы использовать, как при поиске буквенных символов % и _ (а не их много - и односимвольных версий подстановочных знаков), вы бы использовали escape статьи like состояние:

select * from my_table where some_text like '/%%' escape '/';

вернет только строки, где some_text начинается со знака процента.


кажется, вы ищете что-то вроде набора команд 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


вот страница окончательного ответа на tech в сети. Даже приводит примеры и упражнения

http://www.techonthenet.com/sql/like.php