powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Какая коллация используется в вашей СУБД по умолчанию ?
10 сообщений из 10, страница 1 из 1
Какая коллация используется в вашей СУБД по умолчанию ?
    #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
Какая коллация используется в вашей СУБД по умолчанию ?
    #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
Какая коллация используется в вашей СУБД по умолчанию ?
    #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
Какая коллация используется в вашей СУБД по умолчанию ?
    #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
Какая коллация используется в вашей СУБД по умолчанию ?
    #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
Какая коллация используется в вашей СУБД по умолчанию ?
    #37556337
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ёшpostgres использует системные локали для сортировки
А при этом используются локали клиента или сервера?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Какая коллация используется в вашей СУБД по умолчанию ?
    #37556419
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЁшpostgres использует системные локали для сортировки
А при этом используются локали клиента или сервера?
Сервера конечно. Как же он с клиента локали скачает? Они же могут не совпасть бинарно, типа сервер i386 а клиент ARM или IA64 :)
...
Рейтинг: 0 / 0
Какая коллация используется в вашей СУБД по умолчанию ?
    #37556585
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЁшСервера конечно. Как же он с клиента локали скачает? Они же могут не совпасть бинарно,
типа сервер i386 а клиент ARM или IA64 :)

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

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

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


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