执行含单引号的Oracle查询遇ORA-01756错误,求正确执行方法
解决Oracle SQL中的ORA-01756: 引用的字符串未正确终止错误
这个问题是Oracle SQL里很典型的单引号转义问题,我来帮你梳理清楚原因和解决方法:
问题重现
你在SQL*Plus中执行查询时的上下文和出错语句如下:
SQL*Plus: Release 11.2.0.1.0 Production on Thu May 24 11:24:48 2018 Copyright (c) 1982, 2010, Oracle. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options SQL> select 'I'm Looking for study guides 1Z0-071, 1Z0-146, 1Z0-148!' from dual;
随即触发了错误提示:
错误:ORA-01756: 引用的字符串未正确终止
问题原因
错误的根源在字符串里的'I'm部分:第一个单引号标记了字符串的开始,Oracle解析到第二个单引号时,会默认认为这是字符串的结束位置,剩下的m Looking for study guides ...就成了无效的SQL语法,自然抛出报错。
正确的执行方法
在Oracle SQL中,要在字符串内部使用单引号,必须用两个连续的单引号进行转义——Oracle会把连续的两个单引号解析成一个普通的单引号字符,而非字符串的结束标记。
修正后的查询语句如下:
select 'I''m Looking for study guides 1Z0-071, 1Z0-146, 1Z0-148!' from dual;
执行这条语句后,你会得到预期的输出结果:
I'm Looking for study guides 1Z0-071, 1Z0-146, 1Z0-148!
内容的提问来源于stack exchange,提问作者rushchel
相关产品推荐
相关产品推荐

