web-dev-qa-db-ja.com

Oracle SQLエスケープ文字(「&」の場合)

Oracle SQL Developer を使用してSQL挿入ステートメントを実行しようとすると、「置換値を入力してください」プロンプトを生成し続けます。

insert into agregadores_agregadores 
(
 idagregador,
 nombre,
 url
) 
values 
(
 2,
 'Netvibes',
 'http://www.netvibes.com/subscribe.php?type=rss\&url='
);

クエリの特殊文字をエスケープする を使用しましたが、上記の '\'を使用していますが、アンパサンド '&'を避けられず、文字列置換が発生します。

82
ian_scho

&はDEFINEのデフォルト値です。これにより、置換変数を使用できます。私はそれを使用してオフにするのが好きです

定義をオフに設定

エスケープやCHR(38)を心配する必要はありません。

118
Neil Kodner

|| chr(38) ||

このソリューションは完璧です。

55
Aseem

定義文字を&以外に設定します

 SET DEFINE〜
 create table blah(x varchar(20)); 
 insert into blah(x)values( 'blah&amp'); 
 select * from blah; 
 
 X 
 -------------------- 
 blah&amp 
 
30
RC.
insert into AGREGADORES_AGREGADORES (IDAGREGADOR,NOMBRE,URL)
values (2,'Netvibes',
'http://www.netvibes.com/subscribe.php?type=rss' || chr(38) || 'amp;url=');
15
Jeffrey Kemp
SELECT 'Free &' || ' Clear' FROM DUAL;
10
drj

select 'one'||'&'||'two' from dual

4
Izo

本当の答えは、エスケープ文字を「\」に設定する必要があるということです:SET ESCAPE ON

この問題は、エスケープが無効になっているか、エスケープ文字が「\」以外に設定されているために発生した可能性があります。上記のステートメントは、エスケープを有効にしますandそれを '\'に設定します。


以前に投稿された他の回答のどれも、実際に元の質問に回答しません。それらはすべて問題を回避しますが、解決しません。

1