【问题标题】:Oracle Update statement with special character went wrong. Need suggestions [duplicate]带有特殊字符的 Oracle 更新语句出错。需要建议[重复]
【发布时间】:2021-08-17 19:01:19
【问题描述】:

您好,我更新了如下列的所有列值:

Update Sample_table 
set sample_column = 'A&B' 
where sample column is Null;

在选择“&b”的地方弹出了一些变量,我点击了确定。我看到了结果,所有值都显示为“AA&B”。现在我该怎么做。我尝试再次将所有值设置为 A&b,但它不起作用。弹出一个询问类型变量的窗口。这也应该投入生产,而不是替换第一个 A 或删除它,我现在如何更新所有值到 A&B 以及当它为 Null 时。 值中的“&”有什么问题?

【问题讨论】:

    标签: sql oracle oracle-sqldeveloper toad


    【解决方案1】:

    在更新语句之前添加这一行:

    SET DEFINE OFF;
    

    Oracle SQL Developer 实现了 SQLplus 的一项功能,允许您为 SQLplus 脚本创建参数。参数以 & 符号开头。因此&B 被视为一个参数,Oracle SQL Developer 会询问该参数的值。

    SET DEFINE OFF 关闭此功能。

    【讨论】:

      【解决方案2】:

      你应该SET DEFINE OFF。这取决于您使用的工具究竟如何做到这一点。

      在 SQL*Plus 和 SQL Developer(都是 Oracle 的工具)中,您正是这样做的 - 运行该语句。

      这是你目前拥有的:

      SQL> select 'a&b' from dual;
      Enter value for b:
      old   1: select 'a&b' from dual
      new   1: select 'a' from dual
      
      '
      -
      a
      

      这是你应该做的:

      SQL> set define off
      SQL> select 'a&b' from dual;
      
      'A&
      ---
      a&b
      
      SQL>
      

      在 TOAD 中,您将输入其选项并搜索“替换变量提示”并将其设置为“无”。


      我不使用其他工具,所以我不能提出任何建议,但他们也必须有这个选项。

      【讨论】:

      • 嗯,我确实理解了您的建议,但设置定义关闭也提示我相同的变量对话框。我将变量的值输入为 &B,并将值固定为 A&B 而不是 AA&B。我将关闭 SET 定义并将其交给 Prod。 DBA 应该小心。感谢 Littlefoot 一如既往的帮助。
      • 不客气。
      猜你喜欢
      • 2011-01-07
      • 2021-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-09
      • 1970-01-01
      • 2015-11-02
      • 2021-02-11
      相关资源
      最近更新 更多