哪里可以查询oracle数据库? 区分大小写?

发布于 2024-07-30 05:38:45 字数 141 浏览 5 评论 0原文

在哪里可以查询oracle数据库当前的区分大小写设置?

我尝试查看 v$databasenls_database_parameters 并查看系统包,但它们似乎都没有提供我需要的信息......

Where can I query the current case-sensitivity setting of an oracle database?

I've tried looking in v$database, nls_database_parameters, and looking through the system packages, but none of them seem to provide the information I need...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

鸢与 2024-08-06 05:38:45

Oracle 10gR2 中:

SELECT  *
FROM    NLS_SESSION_PARAMETERS
WHERE   parameter IN ('NLS_COMP', 'NLS_SORT')

SQL> ALTER SESSION SET NLS_COMP = 'LINGUISTIC'
  2  /

Session altered
SQL> SELECT  COUNT(*)
  2  FROM    dual
  3  WHERE   'a' = 'A'
  4  /

  COUNT(*)
----------
         1

SQL> ALTER SESSION SET NLS_COMP = 'BINARY'
  2  /

Session altered
SQL> SELECT  COUNT(*)
  2  FROM    dual
  3  WHERE   'a' = 'A'
  4  /

  COUNT(*)
----------
         0

来自 文档

NLS_COMP 指定数据库会话的排序规则行为。

价值观:

  • 二进制

    通常,WHERE 子句和 PL/SQL 块中的比较是二进制的,除非您指定 NLSSORT 函数。

  • 语言

    WHERE 子句和 PL/SQL 块中的所有 SQL 操作的比较应使用 中指定的语言排序NLS_SORT 参数。 为了提高性能,您还可以在要进行语言比较的列上定义语言索引。

  • ANSI

    设置 ANSI 是为了向后兼容; 一般来说,您应该将 NLS_COMP 设置为 LINGUISTIC

In Oracle 10gR2:

SELECT  *
FROM    NLS_SESSION_PARAMETERS
WHERE   parameter IN ('NLS_COMP', 'NLS_SORT')

SQL> ALTER SESSION SET NLS_COMP = 'LINGUISTIC'
  2  /

Session altered
SQL> SELECT  COUNT(*)
  2  FROM    dual
  3  WHERE   'a' = 'A'
  4  /

  COUNT(*)
----------
         1

SQL> ALTER SESSION SET NLS_COMP = 'BINARY'
  2  /

Session altered
SQL> SELECT  COUNT(*)
  2  FROM    dual
  3  WHERE   'a' = 'A'
  4  /

  COUNT(*)
----------
         0

From documentation:

NLS_COMP specifies the collation behavior of the database session.

Values:

  • BINARY

    Normally, comparisons in the WHERE clause and in PL/SQL blocks is binary unless you specify the NLSSORT function.

  • LINGUISTIC

    Comparisons for all SQL operations in the WHERE clause and in PL/SQL blocks should use the linguistic sort specified in the NLS_SORT parameter. To improve the performance, you can also define a linguistic index on the column for which you want linguistic comparisons.

  • ANSI

    A setting of ANSI is for backwards compatibility; in general, you should set NLS_COMP to LINGUISTIC

香橙ぽ 2024-08-06 05:38:45

对于 Oracle 10gR2(及更高版本),参数为 NLS_COMP 和 NLS_SORT。

select * from v$nls_parameters where parameter in ('NLS_COMP','NLS_SORT');

(这些参数在会话级别设置。会话的设置继承自数据库设置,除非通过设置操作系统环境变量或 ALTER SESSION 语句覆盖。)

如果您想要“不区分大小写”排序和字符串匹配,您可以尝试这些设置:

alter session set NLS_SORT=BINARY_CI;
alter session set NLS_COMP=LINGUISTIC;

当然,这些不是参数的唯一设置。 Oracle 10gR2 文档:

10gR2 语言排序和字符串搜索

For Oracle 10gR2 (and later), the parameters are NLS_COMP and NLS_SORT.

select * from v$nls_parameters where parameter in ('NLS_COMP','NLS_SORT');

(These parameters are set at the session level. The settings for a session are inherited from the database setting, unless overridden by setting an OS environment variable, or an ALTER SESSION statement.)

If you want "case-insensitive" sorting and string matching, you can try these settings:

alter session set NLS_SORT=BINARY_CI;
alter session set NLS_COMP=LINGUISTIC;

Those aren't the only settings for the parameters, of course. Oracle 10gR2 documentation:

10gR2 Linguistic Sorting and String Searching

无人问我粥可暖 2024-08-06 05:38:45

除了已经给出的答案之外,请注意 11g 中区分大小写的变化 - 例如,请参阅 11g 文档中有关密码的内容。

In addition to the answers already given be aware that case sensitivity changes in 11g - e.g. see the 11g documentation re passwords.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文