2012-01-06 6 views
7

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

Примечание: Я создаю динамические выражения для выбора SQL через ORM.

+0

Единственное, что нужно «бежать» является апостроф внутри символьного литерала. Ни один из других, о которых вы говорите, это «специальные символы», которые нужно ускользнуть. –

+1

@a_horse_with_no_name Фактически процент и подчеркивание являются специальными символами при использовании предложения WHERE .. LIKE. – RuntimeException

ответ

16

При использовании переменных связывания и ОРМ, внедренные одиночные кавычки и амперсанды должны быть переданы автоматически; это специальные символы в SQL * Plus или SQL * Developer.

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

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

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

2

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

+1

Амперсанд распознается клиентом SQL * Plus. Это не специальный символ для реального сервера базы данных. –

Смежные вопросы