Lorsque j'essaie d'exécuter cette instruction dans Oracle SQL Developer 2.1, une boîte de dialogue "Entrer une variable de substitution" s'ouvre et demande une valeur de remplacement pour TOBAGO.
update t set country = 'Trinidad and Tobago' where country = 'trinidad & tobago';
Comment puis-je éviter cela sans recourir à chr(38)
ou u'trinidad \0026 tobago'
qui masquent tous deux l'objectif de la déclaration?
Appelez ceci avant la requête:
set define off;
Alternativement, hacky:
update t set country = 'Trinidad and Tobago' where country = 'trinidad &' || ' tobago';
SET DEFINE OFF désactive l'analyse des commandes à remplacer variables de substitution avec leurs valeurs.
En SQL * Plus, mettre SET DEFINE ?
en haut du script résout normalement le problème. Cela pourrait également fonctionner pour Oracle SQL Developer.
cela fonctionnera comme vous l'avez demandé sans 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';