Oracle执行Select '('abc','def','ghi')' as values from dual报错ORA-00923咨询
解决ORA-00923错误:你的Oracle查询语句问题分析
咱们直接说问题出在哪——你写的字符串里的单引号没有正确转义!在Oracle中,如果你想在字符串常量里包含单引号,必须用两个连续的单引号来表示一个实际的单引号。
你的原语句里'('abc','def','ghi')'这部分,Oracle会把第一个'当作字符串的起始标记,然后遇到'abc'后面的'就误以为字符串已经结束了,剩下的,def','ghi')'就成了毫无意义的语法碎片,系统自然找不到预期的FROM关键字,于是抛出ORA-00923错误。
正确的查询语句应该是这样的:
Select '(''abc'',''def'',''ghi'')' as values from dual;
改法的逻辑:
把每个原本要放在字符串里的单引号'都替换成两个'',这样Oracle就能正确识别字符串内的单引号了:
'('改成'(''(表示字符串开头的(,紧接着一个单引号)abc'改成abc''(表示abc后面跟着一个单引号)- 以此类推,整个字符串会被Oracle正确解析为
('abc','def','ghi')
执行正确语句后的输出:
Values ------------- ('abc','def','ghi')
这样就能得到你想要的结果啦!
内容的提问来源于stack exchange,提问作者Mathew Linton
相关产品推荐
相关产品推荐

