我在哪里可以查询oracle数据库的当前区分大小写设置?我在哪里可以查询oracle数据库的区分大小写?
我试图寻找在v$database
,nls_database_parameters
,并通过系统的包看,但他们都不提供我需要的信息...
我在哪里可以查询oracle数据库的当前区分大小写设置?我在哪里可以查询oracle数据库的区分大小写?
我试图寻找在v$database
,nls_database_parameters
,并通过系统的包看,但他们都不提供我需要的信息...
在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
指定数据库会话的归类行为。值:
BINARY
通常情况下,除非你指定
NLSSORT
功能在WHERE
条款和PL/SQL
块比较是二进制的。
LINGUISTIC
比较为
WHERE
子句中的所有SQL
操作和PL/SQL
块应该用在NLS_SORT
参数中指定的语言排序。为了提高性能,您还可以在要进行语言比较的列上定义语言索引。
ANSI
的
ANSI
的设置是为了向后兼容;在一般情况下,你应该设置NLS_COMP
到LINGUISTIC
对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;
那些不适合的参数,当然唯一的设置。甲骨文10gR2中的文件:
除了已经给出知道在11g中这种情况下,灵敏度变化的答案 - 例如请参阅11g文档重新密码。
NLS_COMP的可能值是什么,它们如何对应于区分大小写? – thecoop 2009-08-07 14:49:45