web-dev-qa-db-ja.com

Oracle SQL Developerで「trinidad&tobago」を使用して変数置換を回避する方法

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'に頼らずにどうすればこれを回避できますか?

102
Janek Bogucki

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

set define off;

あるいは、ハッキー:

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

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

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

175
Nick Craver

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

14
diederikh

これは、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';
0
nikhil sugandh