Где можно запросить чувствительность к регистру в базах данных Oracle? - PullRequest
3 голосов
/ 07 августа 2009

Где можно запросить текущую настройку чувствительности к регистру базы данных Oracle?

Я пытался заглянуть в v$database, nls_database_parameters и просмотреть системные пакеты, но, похоже, ни один из них не предоставляет нужную мне информацию ...

Ответы [ 3 ]

5 голосов
/ 07 августа 2009

В 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 голос
/ 12 августа 2009

В дополнение к уже даным ответам следует помнить, что чувствительность к регистру изменяется в 11 г - например, см. документацию по паролям 11g.

0 голосов
/ 07 августа 2009

Для 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 Лингвистическая сортировка и поиск строк

...