Как избежать подстановки переменных в 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', которые и скрывают цель заявления?

Ответ 1

Вызовите это перед запросом:

set define off;

Альтернативно, hacky:

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

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

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

Ответ 2

В SQL * Plus класть SET DEFINE ? в верхней части script обычно решает это. Может работать и для Oracle SQL Developer.

Ответ 3

это будет работать, как вы просили без 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';

Ответ 4

установить сканирование; Выше команда также работает.

Ответ 5

У меня тоже была проблема. Что-то начиналось каждый раз, когда я пытался установить соединение с любой БД..

Что сработало для меня, было удаление любого запуска script, который вы могли бы настроить!

то есть. Tools>Preferences...>Database и удалите любой путь к файлу, который у вас есть в текстовом поле с надписью "Имя файла для запуска подключения script"!