95

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

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

上記の「\」を使用してクエリ内の特殊文字をエスケープしようとしましたが、それでもアンパサンド「&」を回避できず、文字列が置換されます。

4

8 に答える 8

139

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

SET DEFINE OFF

そうすれば、エスケープやCHR(38)について心配する必要はありません。

于 2009-07-20T13:33:47.303 に答える
67

|| chr(38) ||

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

于 2010-04-27T06:53:14.430 に答える
33

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

SET DEFINE〜
テーブルblah(x varchar(20));を作成します。
blah(x)値に挿入します('blah&amp');
何とかから*を選択します。

バツ                    
--------------------
何とか&amp

于 2009-07-16T12:56:35.767 に答える
17
insert into AGREGADORES_AGREGADORES (IDAGREGADOR,NOMBRE,URL)
values (2,'Netvibes',
'http://www.netvibes.com/subscribe.php?type=rss' || chr(38) || 'amp;url=');
于 2009-07-16T12:53:11.273 に答える
17
SELECT 'Free &' || ' Clear' FROM DUAL;
于 2012-07-25T06:35:01.863 に答える
6

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

于 2011-06-30T17:17:28.337 に答える
1

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

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


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

于 2014-10-01T00:54:43.740 に答える
-1

リクエストの前にこれを追加してください

set define off;
于 2019-11-27T13:07:35.240 に答える