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

Nai tiruvantel ar varyuvantel i Valar tieyanna nu vilya
...
Рейтинг: 0 / 0
29.10.2003, 14:42
    #32309031
AntonGart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NLS_SORT vs. NLSSORT
Все, я окончательно запутался с сортировкой... У меня создана база 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
29.10.2003, 14:50
    #32309053
AntonGart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NLS_SORT vs. NLSSORT
Все это из sqlplus.
...
Рейтинг: 0 / 0
29.10.2003, 15:10
    #32309093
Violina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NLS_SORT vs. NLSSORT
автор писал:Получаю бред: а с хвостиками идут первыми, затем нормальная а, затем эта В, и в конце 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
29.10.2003, 15:29
    #32309149
AntonGart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NLS_SORT vs. NLSSORT
Но это же неправильно, немцы так не сортируют, та же ЭсЦет должна идти в любом случае после двойной С. Вопрос: зависит ли сортировка также и от NLS_CHARACTERSET? И можно ли определить свою собственную сортировку?
...
Рейтинг: 0 / 0
29.10.2003, 15:58
    #32309208
Violina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NLS_SORT vs. NLSSORT
Код: plaintext
И можно ли определить свою собственную сортировку?


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

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
29.10.2003, 16:09
    #32309235
Violina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NLS_SORT vs. NLSSORT
Вот еще может быть полезным

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
29.10.2003, 16:17
    #32309260
hinotf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NLS_SORT vs. NLSSORT
А может, spfile есть?
А ты мучаешься, меняешь init.ora ?


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

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

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

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


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