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&'); 从 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 转义字符(用于 '&')的主要内容,如果未能解决你的问题,请参考以下文章