Делать сортировку Oracle без учета регистра?

Это связано с созданием сортировки оракула без учета регистра. Большинство решений, которые я видел, упоминают настройки ниже параметров сеанса:

ALTER SESSION SET NLS_COMP = LINGUISTIC;
ALTER SESSION SET NLS_SORT = BINARY_CI;

По умолчанию NLS_COMP - BINARY.

Я обнаружил, что если я просто установлю NLS_SORT в BINARY_CI, не устанавливая NLS_COMP в LINGUISTIC, это все равно будет работать, то есть сортировка оракула становится нечувствительной к регистру. Есть ли какое-либо преимущество для установки параметра NLS_COMP?

1 ответ

Решение

NLS_COMP а также NLS_SORT имеют немного разные эффекты. NLS_COMP это, как следует из названия, для сравнения. NLS_SORT это, как следует из названия, для сортировки. настройка NLS_COMP в LINGUISTIC заставляет сравнения следовать правилам сортировки, заставляет сравнения использовать NLS_SORT установка. Вы можете увидеть разницу при попытке:

SELECT 1 FROM DUAL WHERE 'A' = 'a';

С NLS_COMP = BINARYСравнение дает ложное. С NLS_COMP = LINGUISTIC а также NLS_SORT = BINARY_CIСравнение дает истину.

Нужно ли устанавливать это, зависит от того, какие результаты вы хотите получить от своих запросов.

Другие вопросы по тегам