Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Какая коллация используется в вашей СУБД по умолчанию ? / 10 сообщений из 10, страница 1 из 1
02.12.2011, 10:46
    #37555521
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая коллация используется в вашей СУБД по умолчанию ?
hi all

Знак подчеркивания (ascii=95) может при сортировке выскочить "выше" цифр только при использовании специальной коллации, устанавливаемой на уровне БД или указанной внутри кляузы order by - я прав ?
Если да, то:
1) что должно выводиться раньше ("выше") в MS SQL 2005 XE, если select databasepropertyex('my_test, 'Collation') возвращает строку "Cyrillic_General_CI_AS" ?
2) то же самое, в ORACLE 10 XE, если select value from nls_session_parameters where parameter in ('NLS_COMP') возвращает строку "BINARY" ?

Почему-то получаю в обеих СУБД следующий порядок вывода:
MS SQL 2005 XE:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
select ch,ascii(ch) ch_asc from(
  select '2' ch union all
  select '5' ch union all
  select '0' ch union all
  select '_' 
) t
order by ch

chch_asc_95048250553
ORACLE 10 XE:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select ch,ascii(ch) ch_asc 
from(
    select '2' ch from dual union all
    select '5' ch from dual union all
    select '0' ch from dual union all
    select '_' from dual
) t
order by ch

- результат как в MS SQL.

Тогда как:
FIREBIRD 2.5:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
select ch,ascii_val(ch) ch_asc from(
  select '2' ch from rdb$database union all
  select '5' ch from rdb$database union all
  select '0' ch from rdb$database union all
  select '_' from rdb$database
) t
order by ch

CHCH_ASC048250553_95
...
Рейтинг: 0 / 0
02.12.2011, 11:01
    #37555567
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая коллация используется в вашей СУБД по умолчанию ?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
select ch,ascii(ch) ch_asc from(
  select '2' ch union all
  select '5' ch union all
  select '0' ch union all
  select '_' 
) t
order by ch COLLATE Cyrillic_General_BIN



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
ch   ch_asc
---- -----------
0    48
2    50
5    53
_    95

(4 row(s) affected)
...
Рейтинг: 0 / 0
02.12.2011, 13:14
    #37555922
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая коллация используется в вашей СУБД по умолчанию ?
Таблоид,

Ктож на таких простых данных коллации (что бы это слово не значило) проверяет...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select ch,ascii(ch) ch_asc from(
  select '1ё' ch union all
  select '11' ch union all
  select '1а' ch union all
  select 'ё1' ch union all
  select 'а1' ch union all
  select '+1' ch union all
  select '-1' ch union all
  select '+а' ch union all
  select '-а' ch union all
  select '+ё' ch union all
  select '-ё' ch union all
  select '_' 
) t
order by ch

...
Рейтинг: 0 / 0
02.12.2011, 13:19
    #37555937
Yo.!
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая коллация используется в вашей СУБД по умолчанию ?
Таблоид,

10.2.0.4 SE и 11g XE выдают так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
SQL> select value from nls_session_parameters where parameter in ('NLS_COMP') ;

VALUE
--------------------------------------------------------------------------------
BINARY

select ch,ascii(ch) ch_asc
from(
    select '2' ch from dual union all
    select '5' ch from dual union all
    select '0' ch from dual union all
    select '_' from dual
) t
  8  order by ch ;

C     CH_ASC
- ----------
0         48
2         50
5         53
_         95
...
Рейтинг: 0 / 0
02.12.2011, 15:48
    #37556298
Ёш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая коллация используется в вашей СУБД по умолчанию ?
Таблоид,

postgres использует системные локали для сортировки, по умолчанию в Debian при установке postgres настраивается на локаль «по умолчанию» из /etc/default/locale, а /etc/default/locale инициализируется при установке системы по результатам ответов на конфигурационные вопросы пакета locales так что по умолчанию у меня локаль ru_RU.UTF-8:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
select ch,ascii(ch) ch_asc from(
  select '2' ch union all
  select '5' ch union all
  select '0' ch union all
  select '_' 
) t
order by ch
 ch | ch_asc 
----+--------
 _  |     95
 0  |     48
 2  |     50
 5  |     53
(4 rows)

select ch,ascii(ch) ch_asc from(
  select '2' ch union all
  select '5' ch union all
  select '0' ch union all
  select '_' 
) t
order by ch collate "POSIX";
 ch | ch_asc 
----+--------
 0  |     48
 2  |     50
 5  |     53
 _  |     95
(4 rows)
...
Рейтинг: 0 / 0
02.12.2011, 16:02
    #37556337
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая коллация используется в вашей СУБД по умолчанию ?
Ёшpostgres использует системные локали для сортировки
А при этом используются локали клиента или сервера?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
02.12.2011, 16:34
    #37556419
Ёш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая коллация используется в вашей СУБД по умолчанию ?
Dimitry SibiryakovЁшpostgres использует системные локали для сортировки
А при этом используются локали клиента или сервера?
Сервера конечно. Как же он с клиента локали скачает? Они же могут не совпасть бинарно, типа сервер i386 а клиент ARM или IA64 :)
...
Рейтинг: 0 / 0
02.12.2011, 17:22
    #37556585
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая коллация используется в вашей СУБД по умолчанию ?
ЁшСервера конечно. Как же он с клиента локали скачает? Они же могут не совпасть бинарно,
типа сервер i386 а клиент ARM или IA64 :)

Т.е. клиент совсем никак не может повлиять на порядок сортировки набора данных (а так же
прочие вещи, определяемые коллейтом) и всё зависит от воли админа?..
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
02.12.2011, 17:43
    #37556634
Ёш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая коллация используется в вашей СУБД по умолчанию ?
Dimitry SibiryakovЁшСервера конечно. Как же он с клиента локали скачает? Они же могут не совпасть бинарно,
типа сервер i386 а клиент ARM или IA64 :)

Т.е. клиент совсем никак не может повлиять на порядок сортировки набора данных (а так же
прочие вещи, определяемые коллейтом) и всё зависит от воли админа?..
Эээ... я не совсем понимаю о чём Вы спрашиваете :) Начиная с 9.1 локаль можно привязывать прямо к выражению в запросе или к полю таблицы, но если администратор операционной системы не создал заранее нужные локали в ОС, DBA удалённо через консоль СУБД их не добавит.

В Windows насколько я знаю всегда есть все возможные локали, в RedHat по моему тоже почти все локали автоматом компилируются. В Debian нужно выбирать при установке, компилировать все или только какие-то конкретные.
...
Рейтинг: 0 / 0
02.12.2011, 17:48
    #37556652
Ёш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая коллация используется в вашей СУБД по умолчанию ?
ЁшНачиная с 9.1 локаль можно привязыватьЛокаль — это я слишком громко сказал, только COLLATE конечно.
...
Рейтинг: 0 / 0
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Какая коллация используется в вашей СУБД по умолчанию ? / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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