【问题标题】: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,但我仍然无法避免与符号“&”,导致字符串替换。

【问题讨论】:

    标签: sql oracle escaping oracle-sqldeveloper


    【解决方案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;
          

          【讨论】:

            猜你喜欢
            • 2021-09-14
            • 2019-08-19
            • 2015-01-07
            • 1970-01-01
            • 2021-10-17
            • 2017-03-11
            • 1970-01-01
            • 2015-07-06
            • 1970-01-01
            相关资源
            最近更新 更多