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)
在SQL中,您可以通过另一个引用来转义引号:
SELECT 'Alex''s Tea Factory' FROM DUAL
Run Code Online (Sandbox Code Playgroud)
您可以像下面给出的示例一样使用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)
这仅适用于相似的模式,例如在插入中不需要转义_或%,它们无论如何都被用作普通字符.在任意字符串中,只需要''转义'.
而不是担心你的陈述中的每一个撇号。您可以轻松地使用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)