在哪里可以查询oracle数据库的当前区分大小写设置?
我试过查看v$database
,nls_database_parameters
,并查看系统包,但似乎没有一个提供我需要的信息......
答案 0 :(得分: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
NLS_COMP
指定数据库会话的排序规则行为。值:
BINARY
通常情况下,
WHERE
子句和PL/SQL
块中的比较是二进制的,除非您指定NLSSORT
函数。
LINGUISTIC
SQL
子句和WHERE
块中所有PL/SQL
次操作的比较应使用NLS_SORT
参数中指定的语言排序。要提高性能,您还可以在要进行语言比较的列上定义语言索引。
ANSI
ANSI
的设置是为了向后兼容;通常,您应将NLS_COMP
设置为LINGUISTIC
答案 1 :(得分:1)
除了已经给出的答案之外,请注意11g中的区分大小写更改 - 例如请参阅11g文档重新密码。
答案 2 :(得分:0)
对于Oracle 10gR2(及更高版本),参数为NLS_COMP和NLS_SORT。
select * from v$nls_parameters where parameter in ('NLS_COMP','NLS_SORT');
(这些参数在会话级别设置。会话的设置继承自数据库设置,除非通过设置OS环境变量或ALTER SESSION语句来覆盖。)
如果您想要“不区分大小写”排序和字符串匹配,可以尝试以下设置:
alter session set NLS_SORT=BINARY_CI;
alter session set NLS_COMP=LINGUISTIC;
当然,这些不是参数的唯一设置。 Oracle 10gR2文档: