Где я могу запросить чувствительность базы данных oracle к регистру?
-
12-09-2019 - |
Вопрос
Где я могу запросить текущий параметр учета регистра в базе данных 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
Как правило, сравнения в
WHERE
оговорка и вPL/SQL
блоки являются двоичными, если вы не укажетеNLSSORT
функция.
LINGUISTIC
Сравнения для всех
SQL
операции вWHERE
оговорка и вPL/SQL
блоки должны использовать лингвистическую сортировку, указанную вNLS_SORT
параметр.Чтобы повысить производительность, вы также можете определить лингвистический индекс в столбце, для которого вы хотите провести лингвистические сравнения.
ANSI
Установка из
ANSI
это для обратной совместимости;в общем, вы должны установитьNLS_COMP
ДляLINGUISTIC
Другие советы
В дополнение к уже приведенным ответам имейте в виду, что чувствительность к регистру изменяется в 11g - напримерсмотрите документацию 11g по паролям.
Для 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: