powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / NLS_SORT vs. NLSSORT
14 сообщений из 14, страница 1 из 1
NLS_SORT vs. NLSSORT
    #32308085
AntonGart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не доходит до меня что-то, если я выставляю в init.ora NLS_SORT=LATIN, то это учитывается при ORDER BY? Или нужно еще ORDER BY NLSSORT(col1,'NLS_SORT=LATIN)? То же самое по LINGUISTIC INDEXES.
...
Рейтинг: 0 / 0
NLS_SORT vs. NLSSORT
    #32308323
Фотография hinotf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Должно учитываться. Синтаксис вроде ORDER BY (...NLSSORT) нужен для разового изменения правла сортировки.

Nai tiruvantel ar varyuvantel i Valar tieyanna nu vilya
...
Рейтинг: 0 / 0
NLS_SORT vs. NLSSORT
    #32309031
AntonGart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все, я окончательно запутался с сортировкой... У меня создана база NLS_LANGUAGE=GERMAN, NLS_TERRITORY=GERMANY, NLS_SORT=GERMAN, NLS_COMP=BINARY, NLS_LENGTH_SEMANTICS=CHAR, NLS_NCHAR_CONV_EXCP=FALSE, NLS_CHARACTERSET=WE8MSWIN1252.
Стартую базу, используя init.ora. В нем: NLS_LANGUAGE=GERMAN, NLS_TERRITORY=GERMANY, NLS_SORT=GERMAN, NLS_COMP=ANSI, NLS_LENGTH_SEMANTICS=CHAR, NLS_NCHAR_CONV_EXCP=FALSE
Еще на клиенте в реестре выставлен NLS_LANG=GERMAN_GERMANY.WE8MSWIN1252.
Создал простейшую таблицу:
Код: plaintext
CREATE TABLE sort_test (name varchar2( 20 ))
Добавил записи :
Код: plaintext
INSERT INTO sort_test VALUES('a');
Плюс еще 4 вида буквы а со всякими хвостиками и точками (умляут называются), плюс еще одну специальную немецкую буковку, похожую на В, плюс нормальное слово inter . Делаю
Код: plaintext
SELECT * FROM sort_test ORDER BY name

Получаю бред: а с хвостиками идут первыми, затем нормальная а , затем эта В , и в конце inter . Хотя по правилам должно быть: сначала а , затем с хвостиками, затем с двумя точками, затем inter и затем В (Так сортирует например MS SQL Server с collate Latin1_General_CI_AS).
Что еще непонятно, NLS_SESSION_PARAMETERS дает параметр NLS_LENGTH_SEMANTICS=BYTE, не смотря на init.ora.
...
Рейтинг: 0 / 0
NLS_SORT vs. NLSSORT
    #32309053
AntonGart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все это из sqlplus.
...
Рейтинг: 0 / 0
NLS_SORT vs. NLSSORT
    #32309093
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор писал:Получаю бред: а с хвостиками идут первыми, затем нормальная а, затем эта В, и в конце inter. Хотя по правилам должно быть: сначала а, затем с хвостиками, затем с двумя точками, затем inter и затем В (Так сортирует например MS SQL Server с collate Latin1_General_CI_AS).

По каким правилам? Вот пример из student guide и умляуты там предшествуют а.

How NLS Affects Sorts (continued)
The following examples illustrate sorting behavior:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
SQL> ALTER SESSION SET NLS_SORT=BINARY;
Session altered.
SQL> SELECT letter FROM letters ORDER BY letter;
L
-
a
b
c
z
ue
ae
 6  rows selected.
SQL> ALTER SESSION SET NLS_SORT= GERMAN;
Session altered.
SQL> SELECT letter FROM LETTERS ORDER BY  1 ;
L
-
ae
ue
a
b
c
z
 6  rows selected.
...
Рейтинг: 0 / 0
NLS_SORT vs. NLSSORT
    #32309149
AntonGart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но это же неправильно, немцы так не сортируют, та же ЭсЦет должна идти в любом случае после двойной С. Вопрос: зависит ли сортировка также и от NLS_CHARACTERSET? И можно ли определить свою собственную сортировку?
...
Рейтинг: 0 / 0
NLS_SORT vs. NLSSORT
    #32309208
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
И можно ли определить свою собственную сортировку?


В 9ке можно. В 8ке не знаю.
...
Рейтинг: 0 / 0
NLS_SORT vs. NLSSORT
    #32309223
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте

Example 4-2 Monolingual German Sort
Код: plaintext
1.
SELECT ENAME FROM EMP 
ORDER BY NLSSORT(ENAME, 'NLS_SORT = GERMAN') 


Хотя в случае uni кодов все ОК

http://www.csis.gvsu.edu/GeneralInfo/Oracle/server.920/a96529/ch4.htm#1007112
...
Рейтинг: 0 / 0
NLS_SORT vs. NLSSORT
    #32309235
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот еще может быть полезным

Defining Linguistic Sort Sequences
The linguistic sort sequence also specifies how to handle special cases in sorting and case conversion. For example, the XSpanish linguistic sort sequence treats the double characters ch and ll as single characters.
Available linguistic sort sequences are:

Arabic XGerman Italian Spanish Czech German_Din Latin XSpanish Danish XGerman_Din Norwegian Swedish XDanish Greek Polish Swiss Dutch Hebrew Russian Turkish Finnish Hungarian Slovak West_European German Icelandic XSlovak

Example:
NLS_SORT = XGerman_Din
NLS_SORT = West_European

PS
Может .dba спросить?:)
...
Рейтинг: 0 / 0
NLS_SORT vs. NLSSORT
    #32309260
Фотография hinotf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может, spfile есть?
А ты мучаешься, меняешь init.ora ?


Nai tiruvantel ar varyuvantel i Valar tieyanna nu vilya
...
Рейтинг: 0 / 0
NLS_SORT vs. NLSSORT
    #32309432
AntonGart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Violina:
Да я уже вроде все читал, все пробовал... Что еще не пробовал, так это unicode и кодировку базы менять (так и не понял влияет ли она).
Что еще интересно, если очищаю NLS_LANG в реестре, то умляуты превращаются в ?.

P.S. А .dba наверняка знает, но молчит ;)
...
Рейтинг: 0 / 0
NLS_SORT vs. NLSSORT
    #32309500
AntonGart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще: чем же отличаются NLS_SESSION_PARAMETERS от V$NLS_PARAMETERS и почему они заразы выводят мне все время NLS_COMP=BINARY, хотя в init.ora стоит ANSI?
...
Рейтинг: 0 / 0
NLS_SORT vs. NLSSORT
    #32309600
AntonGart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, вот я глючил! Удалил все записи из таблицы и добавил все то же самое, но не в sqlplus, а в sqlplusw и все стало на места. Я то sqlplus как консольное приложение (видимо с другой кодировкой) запускал в winXP и при инсерте данные из этой кодировки в родную ПОЧЕМУ-ТО не перекодировались, хотя Oracle это обещает. Т.е. у меня вообще какие-то левые символы в таблице лежали. Кто бы подсказал, как мне теперь это настроить...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
NLS_SORT vs. NLSSORT
    #39479838
Фотография Gabit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе время суток,

У меня база в кодировке UTF8.
У меня проблема с казахскими символами.
Они в базе идут после кириллицы, хотя должны быть между буквами кириллицы.
Посмотрел :
SELECT *
FROM v$nls_valid_values
WHERE parameter = 'SORT';

Не нашел подходящую.
Где можно посмотреть полный список для v$nls_valid_values и как его обновить ?
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / NLS_SORT vs. NLSSORT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]