95

在尝试使用Oracle SQL Developer执行 SQL 插入语句时,我不断生成“输入替换值”提示:

insert into agregadores_agregadores 
(
 idagregador,
 nombre,
 url
) 
values 
(
 2,
 'Netvibes',
 'http://www.netvibes.com/subscribe.php?type=rss\&url='
);

我已经尝试使用上面的“\”转义查询中的特殊字符,但我仍然无法避免与符号“&”,从而导致字符串替换。

4

8 回答 8

139

&是 的默认值DEFINE,它允许您使用替换变量。我喜欢用

SET DEFINE OFF

那么您就不必担心转义或 CHR(38)。

于 2009-07-20T13:33:47.303 回答
67

|| chr(38) ||

这个解决方案是完美的。

于 2010-04-27T06:53:14.430 回答
33

将定义字符设置为 & 以外的字符

设置定义~
创建表 blah (x varchar(20));
插入 blah (x) 值('blah&');
从 blah 中选择 *;

X                    
--------------------
废话&

于 2009-07-16T12:56:35.767 回答
17
insert into AGREGADORES_AGREGADORES (IDAGREGADOR,NOMBRE,URL)
values (2,'Netvibes',
'http://www.netvibes.com/subscribe.php?type=rss' || chr(38) || 'amp;url=');
于 2009-07-16T12:53:11.273 回答
17
SELECT 'Free &' || ' Clear' FROM DUAL;
于 2012-07-25T06:35:01.863 回答
6

select 'one'||'&'||'two' from dual

于 2011-06-30T17:17:28.337 回答
1

真正的答案是您需要将转义字符设置为“\”:SET ESCAPE ON

出现问题的原因可能是转义被禁用,或者转义字符设置为“\”以外的内容。上面的语句将启用转义并将其设置为'\'。


之前发布的其他答案都没有真正回答原始问题。他们都解决了这个问题,但没有解决它。

于 2014-10-01T00:54:43.740 回答
-1

在您的请求之前添加此内容

set define off;
于 2019-11-27T13:07:35.240 回答