【发布时间】: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
我想更新Xyz表中具有特殊字符''?@ @C $4 ABC(开头两个字符是两个单引号)的密码。
我正在尝试以下查询
UPDATE Xyz set password="''?@ @C $4" where user_no like '%123%';
但我收到错误
ORA-00911: invalid charachter
【问题讨论】:
标签: oracle oracle11g ora-00911
当您必须在字符串中使用多个单引号时,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>
【讨论】:
您是从其他编辑器或 IDE 粘贴查询吗?或者也许从 Windows 应用程序复制到 Linux?在这种情况下,可能存在不可打印的字符。 如果是这样,您可以重新键入(而不是复制粘贴)SQL 语句并尝试。
此外,双引号在 SQL 中并不常用。您可能想用单引号替换它们。
【讨论】:
UPDATE Xyz set password='''''?@ @C $3' where user_no like '%123%';
' 对其进行转义,即2 个引号代表1 个引号,如上所示。如果此答案或任何其他答案对您有所帮助,请接受并投票。 stackoverflow.com/help/someone-answers