127

Oracle SQL Developer 2.1でこの文を実行しようとすると、ダイアログ・ボックス「Enter Substitution Variable」がポップアップして、TOBAGOの置換値を求められます。

update t set country = 'Trinidad and Tobago' where country = 'trinidad & tobago';

ステートメントの目的を曖昧にする、chr(38)またはその両方に頼らずにこれを回避するにはどうすればよいですか?u'trinidad \0026 tobago'

4

5 に答える 5

218

クエリの前にこれを呼び出します。

set define off;

または、ハッキー:

update t set country = 'Trinidad and Tobago' where country = 'trinidad &' || ' tobago';

SQL*Plus のチューニングから:

SET DEFINE OFF は、コマンドの解析を無効にして、置換変数をその値に置き換えます。

于 2010-02-25T12:46:05.117 に答える
16

SQL*Plus ではSET DEFINE ?、スクリプトの先頭に配置すると、通常これが解決されます。Oracle SQL Developer でも機能する可能性があります。

于 2010-02-25T12:49:00.680 に答える
1

これは、CHAR(38) なしで要求したとおりに機能します。

update t set country = 'Trinidad and Tobago' where country = 'trinidad & '|| 'tobago';

create table table99(col1 varchar(40));
insert into table99 values('Trinidad &' || '  Tobago');
insert into table99 values('Trinidad &' || '  Tobago');
insert into table99 values('Trinidad &' || '  Tobago');
insert into table99 values('Trinidad &' || '  Tobago');
SELECT * FROM table99;

update table99 set col1 = 'Trinidad and Tobago' where col1 = 'Trinidad &'||'  Tobago';
于 2018-10-08T05:51:50.373 に答える