it-roy-ru.com

Как избежать подстановки переменных в Oracle SQL Developer с помощью "Тринидад и Тобаго"

Когда я пытаюсь выполнить этот оператор в Oracle SQL Developer 2.1, появляется диалоговое окно "Введите переменную замещения" с запросом значения замены дляTOBAGO,

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

Как я могу избежать этого, не прибегая к chr(38) или u'trinidad \0026 tobago', которые затеняют цель утверждения?

98
Janek Bogucki

Позвоните до запроса:

set define off;

В качестве альтернативы, хаки

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

От Настройка SQL * Plus :

SET DEFINE OFF отключает анализ команд для замены переменные подстановки с их значениями.

165
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