Oracle SQL中如何转义引号?执行动态SQL语句报错求助
Oracle SQL中EXECUTE IMMEDIATE的引号转义方法
你的语句报错是因为字符串嵌套单引号时出现语法冲突,Oracle中有两种常用的解决方式:
1. 单引号转义(双单引号)
在字符串内部的单引号需要用两个连续的单引号来表示一个实际的单引号,修正后的语句如下:
EXECUTE IMMEDIATE 'UPDATE TPERSON SET NAME = ''john'' WHERE NAME = ''John''';
这里把原语句里的'john'改成''john'','John'改成''John'',让Oracle识别出这些是字符串内的单引号,而非语句的结束标记。
2. 使用Q-quoting(引用运算符)
如果字符串里包含大量单引号,用双单引号会显得杂乱,可使用Oracle的Q-quoting语法,格式为q'[内容]'(方括号可替换为{}、()、<>等成对符号),内部的单引号无需转义:
EXECUTE IMMEDIATE q'[UPDATE TPERSON SET NAME = 'john' WHERE NAME = 'John']';
这种方式更直观,在复杂字符串场景下可读性更强。
内容的提问来源于stack exchange,提问作者BlondeSue
相关产品推荐
相关产品推荐

