当我尝试在Oracle SQL Developer 2.1中执行此语句时,弹出一个对话框“输入替换变量”,询问 TOBAGO 的替换值,
update t set country = 'Trinidad and Tobago' where country = 'trinidad & tobago';
如果不诉诸chr(38)
或u'trinidad \0026 tobago'
,这两者都会模糊声明的目的,我该如何避免这种情况?
答案 0 :(得分:172)
在查询之前调用此方法:
set define off;
或者,hacky:
update t set country = 'Trinidad and Tobago' where country = 'trinidad &' || ' tobago';
SET DEFINE OFF禁用解析要替换的命令 替换变量及其值。
答案 1 :(得分:14)
在SQL * Plus中,将SET DEFINE ?
放在脚本的顶部通常可以解决这个问题。也可能适用于Oracle SQL Developer。
答案 2 :(得分:0)
这可以按照您要求的不使用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';
答案 3 :(得分:0)
如果使用liquibase运行sql文件,不会报错。但是对于 sql 开发人员,在你的 sql sode
之前使用这个set define off;
答案 4 :(得分:-2)
设置扫描关闭; 以上命令也有效。
答案 5 :(得分:-3)
我也遇到了一些问题。每当我尝试建立与任何数据库的连接时,都会启动。
对我有用的是删除您可能已配置的任何启动脚本!
即。 Tools>Preferences...>Database
和
删除标记为文本框中的所有文件路径
"连接启动脚本的文件名"!