在尝试使用 Oracle SQL Developer 执行 SQL 插入语句时,我不断生成“输入替换值”提示:
insert into agregadores_agregadores
(
idagregador,
nombre,
url
)
values
(
2,
'Netvibes',
'http://www.netvibes.com/subscribe.php?type=rss\&url='
);
我已经尝试使用上面的“\”escaping the special character in the query,但我仍然无法避免与符号“&”,从而导致字符串替换。
&
是 DEFINE
的默认值,它允许您使用替换变量。我喜欢用
SET DEFINE OFF
那么您就不必担心转义或 CHR(38)。
|| chr(38) ||
这个解决方案是完美的。
将定义字符设置为 & 以外的字符
SET DEFINE ~ create table blah (x varchar(20)); insert into blah (x) values ('blah&'); select * from blah; X -------------------- blah&
insert into AGREGADORES_AGREGADORES (IDAGREGADOR,NOMBRE,URL)
values (2,'Netvibes',
'http://www.netvibes.com/subscribe.php?type=rss' || chr(38) || 'amp;url=');
SELECT 'Free &' || ' Clear' FROM DUAL;
select 'one'||'&'||'two' from dual
select 'one&' || 'two' from dual
真正的答案是您需要将转义字符设置为“\”:SET ESCAPE ON
出现问题的原因可能是转义被禁用,或者转义字符设置为“\”以外的内容。上面的语句将启用转义并将其设置为'\'。
之前发布的其他答案都没有真正回答原始问题。他们都解决了这个问题,但没有解决它。
在您的请求之前添加此内容
set define off;