oracle sql - 如何转义结果文本

时间:2016-05-04 09:18:12

标签: sql oracle

如果我有以下内容;

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文件,然后可以运行。 但是,正如你可以看到“三个人”这样的'是不正确的,我需要逃避它。

任何建议都非常感谢。

2 个答案:

答案 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完全按原样解释字符串;我使用了[],但你可以使用任何你想要的东西:[], {}, <>, ...