如果我有以下内容;
SQL> create table test (field1 varchar(25));
Table created.
SQL> insert into test values ('Ric''s test');
1 row created.
SQL> select * from test;
FIELD1
-------------------------
Ric's test
如何更改select语句以使结果为
Ric''s test
所以'逃脱
长版本,我正在编写一个将表提取到sql语句中的语句,例如;
create table test2 (field1 varchar(25),
field2 varchar(25),
field3 varchar(25),
field4 varchar(25),
field5 varchar(25)
);
insert into test2 values ('one','two','three''s','four','five');
select 'INSERT INTO othertable (
field1,field2,field3,field4,field5) values
('''||field1||''', '''||field2||''', '''||field3||''',
'''||field4||''', '''||field5||''');' as val from test2;
最后一次选择的结果是;
INSERT INTO othertable (
field1,field2,field3,field4,field5) values
('one', 'two', 'three's',
'four', 'five');
被重定向到.sql文件,然后可以运行。 但是,正如你可以看到“三个人”这样的'是不正确的,我需要逃避它。
任何建议都非常感谢。
答案 0 :(得分:1)
select replace(field1, '''', '''''') from test
答案 1 :(得分:0)
您可以使用Q quote syntax:
SQL> insert into test values (q'[Ric''s test]');
1 row created.
SQL> select * from test;
FIELD1
-------------------------
Ric''s test
这将告诉Oracle完全按原样解释字符串;我使用了[]
,但你可以使用任何你想要的东西:[], {}, <>, ...