2016-05-04 7 views
0

次の場合は、結果があるように私はselect文を変更するにはどうすればよいoracle sql - 結果テキストをエスケープする方法

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 

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; 

最後の選択の結果は次のとおりです。

このファイルは.sqlファイルにリダイレクトされ、後で実行することができます。 しかし、「three's」が間違っているのを見ると、私はそれをエスケープする必要があります。

本当にありがとうございます。

答えて

1
select replace(field1, '''', '''''') from test 
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に言うウィル。 []を使用しましたが、必要なものはどれも使用できます:[], {}, <>, ...

関連する問題