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

the*_*oop 3 oracle collation case-sensitive

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

我试过查看v$database,nls_database_parameters查看系统包,但似乎没有一个提供我需要的信息......

Qua*_*noi 5

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
Run Code Online (Sandbox Code Playgroud)

来自文档:

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

价值观:

  • BINARY

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

  • LINGUISTIC

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

  • ANSI

    设置ANSI是为了向后兼容; 一般来说,你应该设置NLS_COMPLINGUISTIC