如何在SqlDeveloper中成功运行这样的查询?插入带有特殊字符的字符串到列中
execute immediate q'#
insert into results(SrcProcedure)
values('d/&'s*73;.f45')
#';
如何在SqlDeveloper中成功运行这样的查询?插入带有特殊字符的字符串到列中
execute immediate q'#
insert into results(SrcProcedure)
values('d/&'s*73;.f45')
#';
您需要了解您的语言的转义规则。在SQL中,'
是一个特殊字符。它的逃逸是''
:
execute immediate q'#
insert into results(SrcProcedure)
values(''d/&''''s*73;.f45'')
#';
规则:对于嵌套每个级别,你需要复制所有的单引号。
d/&'s*73;.f45
'd/&''s*73;.f45'
...values(''d/&''''s*73;.f45'')...
你可以,如果你use q'{...}'
用更少的报价逃脱:
execute immediate q'{
insert into results(SrcProcedure)
values('d/&''s*73;.f45')
}';
相关:
可选的引用语法几乎适用于任何字符作为quote_delimiter。 'q'#...#';'工作正常。问题在于字符串内部的字符串必须被转义。 –
问题是您试图插入值d/&'s*73;.f45
并且'
字符被解释为值的结尾。
你需要躲避'
字符:
execute immediate q'#
insert into results(SrcProcedure)
values('d/&''s*73;.f45')
#';
或者你可以嵌套替代引用机制,以避免任何字符串转义:在PLSQL逃逸单引号]的
execute immediate q'#
insert into results(SrcProcedure)
values(q'!d/&'s*73;.f45!')
#';
可能重复( http://stackoverflow.com/questions/6678478/escaping-single-quote-in-plsql) –
[SQL Server varchar字段中允许使用哪些“特殊”字符?](http://stackoverflow.com/问题/ 7038213 /其中,特殊字符,都允许的功能于SQL- server-varchar-fields) –