Когда я пытаюсь выполнить это утверждение в 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'
, которые и скрывают цель заявления?
Вызовите это перед запросом:
set define off;
Альтернативно, hacky:
update t set country = 'Trinidad and Tobago' where country = 'trinidad &' || ' tobago';
SET DEFINE OFF отключает разбор команд для замены переменные замещения с их значениями.
set define off;
делать?
В SQL * Plus класть SET DEFINE ?
в верхней части script обычно решает это. Может работать и для Oracle SQL Developer.
это будет работать, как вы просили без 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';
chr(38)
.
У меня тоже была проблема. Что-то начиналось каждый раз, когда я пытался установить соединение с любой БД..
Что сработало для меня, было удаление любого запуска script, который вы могли бы настроить!
то есть. Tools>Preferences...>Database
и
удалите любой путь к файлу, который у вас есть в текстовом поле с надписью
"Имя файла для запуска подключения script"!
установить сканирование; Выше команда также работает.