ChatGPT解决这个技术问题 Extra ChatGPT

Oracle SQL 转义字符(用于 '&')

在尝试使用 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,但我仍然无法避免与符号“&”,从而导致字符串替换。


B
BuZZ-dEE

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

SET DEFINE OFF

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


G
Gaffi

|| chr(38) ||

这个解决方案是完美的。


这可以完成工作,但在处理预先存在的字符串时有点笨拙。
对我来说 SET DEFINE OFF 不起作用。你的解决方案会奏效。谢谢...
在哪里可以找到 chr() 字符的完整列表?我有一个类似的问题,但在我的情况下,我希望转义一个 ( ' ) 字符。
@user7587050 您可以使用任何 ASCII 表。它们在 Internet 上很容易获得,例如在 Wikipedia en.wikipedia.org/wiki/ASCII
R
RC.

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

SET DEFINE ~
create table blah (x varchar(20));
insert into blah (x) values ('blah&amp');
select * from blah;

X                    
-------------------- 
blah&amp

J
Jeffrey Kemp
insert into AGREGADORES_AGREGADORES (IDAGREGADOR,NOMBRE,URL)
values (2,'Netvibes',
'http://www.netvibes.com/subscribe.php?type=rss' || chr(38) || 'amp;url=');

这是一个更好的通用解决方案,它独立于用户权限(即当用户不允许 SET DEFINE OFF 时)以及当用户想要在同一 SQL 命令中指定文本中的 & 和定义变量时。
d
drj
SELECT 'Free &' || ' Clear' FROM DUAL;

G
Gaffi

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


& 符号只需要在字符串的末尾,节省一半的连接。 select 'one&' || 'two' from dual
T
Terrible Tadpole

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

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

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


我在 Ask Tom (asktom.oracle.com/pls/asktom/…) 上读到“SET ESCAPE 是 sqplus'ism”。因此,只有当问题是关于 SQL*Plus 时,这才是真正的答案。
H
Helali

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

set define off;