将包含特殊字符的字符串插入列中

时间:2015-04-28 12:47:20

标签: sql oracle oracle-sqldeveloper database-administration

如何在SqlDeveloper中成功运行此类查询?

execute immediate q'#
                    insert into results(SrcProcedure) 
                                values('d/&'s*73;.f45')
                    #';

2 个答案:

答案 0 :(得分:2)

您需要了解语言的逃避规则。在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')
                }';

相关:

答案 1 :(得分:1)

问题是您正在尝试插入值d/&'s*73;.f45,并且'字符被解释为值的结尾。

您需要转义'字符:

execute immediate q'#
                insert into results(SrcProcedure) 
                            values('d/&''s*73;.f45')
                #';

或者您可以嵌套替代引用机制以避免任何字符串转义:

execute immediate q'#
                insert into results(SrcProcedure) 
                            values(q'!d/&'s*73;.f45!')
                #';