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

Posted

技术标签:

【中文标题】Oracle SQL 转义字符(用于 \'&\')【英文标题】:Oracle SQL escape character (for a '&')Oracle SQL 转义字符(用于 '&') 【发布时间】:2010-11-11 08:41:53 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

SET DEFINE OFF

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

【讨论】:

【参考方案2】:

|| chr(38) ||

这个解决方案很完美。

【讨论】:

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

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

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

【讨论】:

【参考方案4】:
insert into AGREGADORES_AGREGADORES (IDAGREGADOR,NOMBRE,URL)
values (2,'Netvibes',
'http://www.netvibes.com/subscribe.php?type=rss' || chr(38) || 'amp;url=');

【讨论】:

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

【讨论】:

【参考方案6】:

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

【讨论】:

& 符号只需要在字符串的末尾,节省一半的连接。 select 'one&' || 'two' from dual【参考方案7】:

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

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


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

【讨论】:

我在 Ask Tom (asktom.oracle.com/pls/asktom/…) 上读到“SET ESCAPE 是 sqplus 主义”。所以只有当问题是关于 SQL*Plus 时,这才是真正的答案。【参考方案8】:

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

set define off;

【讨论】:

以上是关于Oracle SQL 转义字符(用于 '&')的主要内容,如果未能解决你的问题,请参考以下文章

sql特殊字符怎么转义

oracle怎么将字符串中的转义符

Oracle SQL - 字段名称中的转义与符号[重复]

转义字符有都哪些?

Oracle中特殊字符&和'的处理方案

XML中的转义字符