如何在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) –