2012-01-06 153 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