Oracle pl-sql转义字符(用于"'")

Bis*_*han 31 oracle escaping oracle11g

当我尝试INSERT在oracle中执行语句时,我收到SQL Error: ORA-00917: missing comma错误,因为Alex's Tea Factory我的INSERT语句中有一个值.

我怎么能逃脱'

Cod*_*odo 47

要逃避它,请加上引号:

INSERT INTO TABLE_A VALUES ( 'Alex''s Tea Factory' );
Run Code Online (Sandbox Code Playgroud)


Thi*_*ilo 9

在SQL中,您可以通过另一个引用来转义引号:

SELECT 'Alex''s Tea Factory' FROM DUAL
Run Code Online (Sandbox Code Playgroud)


gan*_*lva 7

您可以像下面给出的示例一样使用ESCAPE

'_'通配符用于匹配一个字符,而'%'用于匹配任何字符的零次或多次出现.这些字符可以在SQL中转义.

SELECT name FROM emp WHERE id LIKE '%/_%' ESCAPE '/';
Run Code Online (Sandbox Code Playgroud)

PL/SQL中的相同工作:

 if( id like '%/_%' ESCAPE '/' )
Run Code Online (Sandbox Code Playgroud)

这仅适用于相似的模式,例如在插入中不需要转义_或%,它们无论如何都被用作普通字符.在任意字符串中,只需要''转义'.


Wae*_*saf 7

而不是担心你的陈述中的每一个撇号。您可以轻松地使用q' Notation.

例子

SELECT q'(Alex's Tea Factory)' FROM DUAL;
Run Code Online (Sandbox Code Playgroud)

此符号中的关键组件是

  • q' 这表示符号的开始
  • ( 一个可选符号,表示要完全转义的语句的开头。
  • 亚历克斯的茶厂(这就是声明本身)
  • )' 带有撇号的右括号表示符号的结尾。

这样,您可以在符号中填充多少个撇号,而不必担心每个撇号,它们都将得到安全处理。

重要的提示

既然你用过,(你必须用 关闭它)',并记住使用任何其他符号是可选的,例如,下面的代码将与上一个完全一样运行

SELECT q'[Alex's Tea Factory]' FROM DUAL;
Run Code Online (Sandbox Code Playgroud)


小智 5

SELECT q'[Alex's Tea Factory]' FROM DUAL
Run Code Online (Sandbox Code Playgroud)