【问题标题】:How to update value with special character in oracle 11g如何在 oracle 11g 中使用特殊字符更新值
【发布时间】:2020-06-04 16:10:10
【问题描述】:

我想更新Xyz表中具有特殊字符''?@ @C $4 ABC(开头两个字符是两个单引号)的密码。

我正在尝试以下查询

UPDATE Xyz set password="''?@ @C $4" where user_no like '%123%';

但我收到错误

ORA-00911: invalid charachter

【问题讨论】:

    标签: oracle oracle11g ora-00911


    【解决方案1】:

    当您必须在字符串中使用多个单引号时,q-quoting 机制会有所帮助。

    SQL> desc xyz
     Name                                      Null?    Type
     ----------------------------------------- -------- ----------------------------
     USER_NO                                            NUMBER
     PASSWORD                                           VARCHAR2(20)
    
    SQL> select * From xyz;
    
       USER_NO PASSWORD
    ---------- --------------------
           123 a
    
    SQL> update xyz set password = q'[''?@ @C $3]' where user_no = 123;
    
    1 row updated.
    
    SQL> select * From xyz;
    
       USER_NO PASSWORD
    ---------- --------------------
           123 ''?@ @C $3
    
    SQL>
    

    【讨论】:

    • 谢谢,它正在工作。非常感谢您的帮助
    【解决方案2】:

    您是从其他编辑器或 IDE 粘贴查询吗?或者也许从 Windows 应用程序复制到 Linux?在这种情况下,可能存在不可打印的字符。 如果是这样,您可以重新键入(而不是复制粘贴)SQL 语句并尝试。

    此外,双引号在 SQL 中并不常用。您可能想用单引号替换它们。

    【讨论】:

    • 不,我没有使用任何 IDE。并尝试通过在终端上手动键入查询来运行查询。而且我在字符串值中有两个单引号,所以我尝试了双引号。但还是不行。
    • 你可以试试UPDATE Xyz set password='''''?@ @C $3' where user_no like '%123%';
    • 在 Oracle 中,双引号仅用于对象名称等标签,不用于标识文字字符串。
    • 太棒了。你能解释一下为什么它会起作用吗?
    • 很高兴为您提供帮助!正如@pmdba 解释的那样,用单引号将字符串括起来。如果您的字符串包含单引号,请使用额外的' 对其进行转义,即2 个引号代表1 个引号,如上所示。如果此答案或任何其他答案对您有所帮助,请接受并投票。 stackoverflow.com/help/someone-answers
    猜你喜欢
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多