Где я могу запросить чувствительность базы данных oracle к регистру?

StackOverflow https://stackoverflow.com/questions/1244804

Вопрос

Где я могу запросить текущий параметр учета регистра в базе данных 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:

10gR2 Лингвистическая сортировка и поиск по строкам

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top