Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Вопрос по сравнению строк... / 2 сообщений из 2, страница 1 из 1
17.01.2007, 11:01
    #34260868
Alexey Kuznetsov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по сравнению строк...
Не подскажут ли знатоки DB2 почему например строка '@' меньше чем '4' ?

select * from table (values ('@'), ('4'), ('1')) a order by 1

----
@
1
4
----

а в java при сравнеии "@" и "4", "@" - больше.

DB2 8.2.6 Express-C

P.S. мы это обошли путем отказа от "@", стали юзать $ который одинаково сравнивается и в DB и в JAVA но все же интересно... наверное все дело в каких-нить коловых страницах...
...
Рейтинг: 0 / 0
17.01.2007, 11:57
    #34261143
Бабичев Сергей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по сравнению строк...
Дело в разных режимах сортировки.
Одно сортирует по лингвистическим правилам для установленной языковой локали, другое - по ASCII коду символа.
Как пример (правда из оракла):
Код: 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.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
-- Режим бинарной сортировки:
-- Тестовые данные:
with 
   sqf_sort_test as 
     (
        select '@' str from dual union all
        select '1' str from dual union all
        select '4' str from dual union all
        select 'А' str from dual union all
        select 'Ё' str from dual
     )
-- Конец тестовых данных.
--
-- Непосредственно сам запрос:
select str
  from sqf_sort_test
 order by nlssort(str, 'NLS_SORT = BINARY') -- Явно указываем бинарный режим

Query finished, retrieving results...

STR
---
 1 
 4 
@
Ё
А

 5  row(s) retrieved

------------------------------------------

-- Режим лингвистической сортировки с учетом правил русского языка:
-- Тестовые данные:
with 
   sqf_sort_test as 
     (
        select '@' str from dual union all
        select '1' str from dual union all
        select '4' str from dual union all
        select 'А' str from dual union all
        select 'Ё' str from dual
     )
-- Конец тестовых данных.
--
-- Непосредственно сам запрос:     
select str
  from sqf_sort_test
order by nlssort(str, 'NLS_SORT = RUSSIAN') -- Явно указываем лингвистический режим по правилам русского языка

Query finished, retrieving results...

STR
---
@
А
Ё
 1 
 4 

 5  row(s) retrieved


------------------------------------------

-- Режим лингвистической сортировки с учетом правил немецкого языка:
-- Тестовые данные:
with 
   sqf_sort_test as 
     (
        select '@' str from dual union all
        select '1' str from dual union all
        select '4' str from dual union all
        select 'А' str from dual union all
        select 'Ё' str from dual
     )
-- Конец тестовых данных.
--
-- Непосредственно сам запрос:     
select str
  from sqf_sort_test
order by nlssort(str, 'NLS_SORT = GERMAN') -- Явно указываем лингвистический режим по правилам немецкого языка

Query finished, retrieving results...

STR
---
@
Ё
А
 1 
 4 

 5  row(s) retrieved
Заметь, на одних и тех же данных получили три разных варианта сортировки...
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Вопрос по сравнению строк... / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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