When I try to execute this statement in Oracle SQL Developer 2.1 a dialog box \"Enter Substitution Variable\" pops up asking for a replacement value for TOBAGO<
I was having some issue around this too. Something was starting up everytime I tried to setup a connection to any DB..
What worked for me was removing any startup script that you might have configured!
i.e. Tools>Preferences...>Database
and
remove any file path that you have in the text box labeled
"Filename for connection startup script"!
Call this before the query:
set define off;
Alternatively, hacky:
update t set country = 'Trinidad and Tobago' where country = 'trinidad &' || ' tobago';
From Tuning SQL*Plus:
SET DEFINE OFF disables the parsing of commands to replace substitution variables with their values.
set scan off; Above command also works.
In SQL*Plus putting SET DEFINE ?
at the top of the script will normally solve this. Might work for Oracle SQL Developer as well.
this will work as you asked without 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';