2012-01-06 122 views
7

Oracle中有一种简单的方法来转义SQL语句中的特殊字符吗? (即%,&,')我在手动转义字符方面看到了这个link,但我认为Oracle可能提供了一个更简单的方法来实现。转义SQL中的特殊字符

注:我通过ORM生成动态SQL select语句。

+0

唯一需要的东西“逃逸”是字面字符内的一个报价。你提到的其他人都不是需要转义的“特殊字符”。 – 2012-01-06 21:32:41

+1

@a_horse_with_no_name实际上,使用WHERE .. LIKE子句时,百分比和下划线是特殊字符。 – RuntimeException 2014-01-31 11:43:33

回答

16

如果使用绑定变量和ORM,嵌入式单引号和&符号应自动移交;这些是SQL * Plus或SQL * Developer中的特殊字符。

使用像在那里寻找文字字符%和_(而不是他们多和单字符通配符的版本),你应该使用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客户端识别。它不是实际数据库服务器的特殊字符。 – 2012-01-06 21:33:37