【问题标题】:set escape character in oracle在 oracle 中设置转义字符
【发布时间】:2016-03-29 16:33:29
【问题描述】:

我正在开发一个尝试在 oracle 和 sql-server 中重置用户密码的 Java 程序。此密码是随机生成的密码,其中包含一些不能作为普通字符串接受的字符。例如。 ',"",;

我用来重置用户密码的命令是:

神谕: ALTER USER <username> IDENTIFIED BY <password>

sql 服务器: ALTER LOGIN <username> WITH PASSWORD = '<passowrd>'

我怎样才能做这个重置,以便它可以接受所有类型的特殊字符?

我用谷歌搜索了quoting method:。我也确实发现了使用单码和双码。但是,如果生成的密码在该密码中有" 或相同的引号分隔符怎么办?那么这将是一个问题。

Eg. IDENTIFIED BY 'jks'k"fjh''d'
Eg. password = q[#kkksdj#jsksls#]
Eg. password = "nm.js""kh:kjhs"

我有什么方法可以在 oracle 和 sql-server 中执行此操作吗?或者在发送到 oracle/sql-server 之前,我是否需要从 java 中逐个转义每个字符?我的 oracle 和 sql-server 的重置程序是不同的。所以方法可以不同。

【问题讨论】:

  • 你为什么要标记sqlserveroraclesqlserver 是不同的 RDBMS 产品。
  • @LalitKumarB 对此感到抱歉。我已经编辑了帖子
  • 好的。我只能回答关于 Oracle 的问题。

标签: sql sql-server oracle oracle11g escaping


【解决方案1】:

但是,如果生成的密码在该密码内有一个 " 或相同的引号分隔符怎么办?那么这将是一个问题。

是的,当然。 Oracle 已将其记录在 Object Names and Qualifiers 中,这同样适用于 密码

来自documentation

密码必须遵循“架构对象命名规则”部分中描述的规则

还有最重要的部分:

不带引号的标识符只能包含以下字母数字字符 您的数据库字符集和下划线 (_)、美元符号 ($)、 和井号 (#)。数据库链接也可以包含句点 (.) 和 “at”符号 (@)。 Oracle 强烈建议您不要在其中使用 $ 和 # 不带引号的标识符。

带引号的标识符可以包含任何字符和标点符号 以及空格。但是,无论是带引号的还是不带引号的标识符 可以包含双引号或空字符 (\0)。

因此,引用非引用标识符都不能包含双引号

要允许单引号,您可以使用带有双引号带引号的标识符。例如,

SQL> create user test identified by "a'b'c";

User created.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 2016-04-15
    • 2014-12-30
    • 2021-09-14
    • 2010-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多