Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сортировка длинных строк / 25 сообщений из 31, страница 1 из 2
23.10.2009, 14:50
    #36269247
KlugCZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка длинных строк
Oracle 10.2.0.4.0
Может кто-нибудь подсказать почему происходит неверная сортировка в запросе:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
with t as (SELECT  'str'||lpad(level, 3 ,'0') a,
                   case when level> 1  then 'str'||lpad(level- 1 , 3 ,'0') else null end AS prev_a
           FROM    dual
           connect by level<= 190 )

select * 
from (SELECT  ltrim(sys_connect_by_path(a, ','), ',') AS aes
      FROM    t
      START   WITH prev_a IS NULL
      CONNECT BY prev_a = PRIOR a) 
order by  1  desc
или скажите какую документацию покурить
...
Рейтинг: 0 / 0
23.10.2009, 14:55
    #36269267
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка длинных строк
KlugCZМожет кто-нибудь подсказать почему происходит неверная сортировка в запросе:В чём её "неверность"? И ка бы тебе хотелось?
http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
...
Рейтинг: 0 / 0
23.10.2009, 15:05
    #36269301
KlugCZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка длинных строк
ElicВ чём её "неверность"? И ка бы тебе хотелось?
http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM

Посмотрите на результат запроса и получите ответы на ваши вопросы.

З.Ы. если вам нечего ответить по существу, то лучше промолчите.
...
Рейтинг: 0 / 0
23.10.2009, 15:07
    #36269310
Алымов Анатолий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка длинных строк
У меня "верная"
...
Рейтинг: 0 / 0
23.10.2009, 15:08
    #36269314
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка длинных строк
Elic,

а проблема у человека вот в чём:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
with t as (SELECT  'str'||lpad(level, 3 ,'0') a,
                   case when level> 1  then 'str'||lpad(level- 1 , 3 ,'0') else null end AS prev_a
           FROM    dual
           connect by level<=:p) /*:p=144*/
select * 
from (SELECT  ltrim(sys_connect_by_path(a, ','), ',') AS aes
      FROM    t
      START   WITH prev_a IS NULL
      CONNECT BY prev_a = PRIOR a) 
ORDER BY  1  DESC;

...,str141,str142,str143
...,str141,str142,str143,str144
...,str141,str142
...

При :p >= 144 (в моём случае) первые строки результата отсортированы как попало. Oracle 11g EE on RHEL. Повторяемо в Oracle SQL Developer, PL/SQL Developer, Quest TOAD for Oracle. SQL*Plus ещё не пробовал. :)
...
Рейтинг: 0 / 0
23.10.2009, 15:13
    #36269336
KlugCZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка длинных строк
suPPLer,
вот вот, абсолютно случайно на это наткнулся.
...
Рейтинг: 0 / 0
23.10.2009, 15:14
    #36269339
Алымов Анатолий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка длинных строк
suPPLer
При :p >= 144 (в моём случае) первые строки результата отсортированы как попало. Oracle 11g EE on RHEL. Повторяемо в Oracle SQL Developer, PL/SQL Developer, Quest TOAD for Oracle. SQL*Plus ещё не пробовал. :)
У нас Oracle 10.2.0.4.0 на солярке
такой проблемы нет - смотрю через PL/SQL Developer
...
Рейтинг: 0 / 0
23.10.2009, 15:14
    #36269341
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка длинных строк
Проверил SQL*Plus, спульнул в файлик - та же лажа. Вначале строка с 143 в конце, потом с 144, потом с 142 - и дальше, как должно быть, по убывающей.
-------------------------------------------------------
When I say "RTFM" or "STFF" or "STFW",
the third letter means "Following" or "Fine"...
...
Рейтинг: 0 / 0
23.10.2009, 15:15
    #36269343
KlugCZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка длинных строк
suPPLer,
кстати тоже при p>144 начинается чихарда.
...
Рейтинг: 0 / 0
23.10.2009, 15:23
    #36269375
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка длинных строк
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit + PL/SQL Developer - тоже неверная сортировка
...
Рейтинг: 0 / 0
23.10.2009, 15:24
    #36269380
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка длинных строк
KlugCZ, версия какая у Вас? У меня повторяемо на 9.2.0.6 и на 11.1.0.7 (Linux). Налицо incorrect results как повод для SR. Так что, владеющие поддержкой, дело за Вами. :)
-------------------------------------------------------
When I say "RTFM" or "STFF" or "STFW",
the third letter means "Following" or "Fine"...
...
Рейтинг: 0 / 0
23.10.2009, 15:25
    #36269384
hell
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка длинных строк
у меня нормально всё
__________________
For more information, please proceed to http://ot-e.biz
...
Рейтинг: 0 / 0
23.10.2009, 15:26
    #36269386
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка длинных строк
suPPLerПри :p >= 144 (в моём случае) первые строки результата отсортированы как попало.Не совсем так. Все строки отсортированы "правильно", только в сортировке участвуют первые 1000 байт (?символов).
...
Рейтинг: 0 / 0
23.10.2009, 15:28
    #36269395
KlugCZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка длинных строк
suPPLer,
в самом начале отписал версию Oracle 10.2.0.4.0 (щас на винде Ентерпрайз), дома на линухе Стандарт Ван с лицензией и поддержкой, так что прогоню дома и отпишу в саппорт.
Сразу подумал, что мож у меня какие-нить нлс настройки неверно стоят или еще че подобного, но даже гугл ничего о таких случаях не сказал.
...
Рейтинг: 0 / 0
23.10.2009, 15:36
    #36269424
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка длинных строк
KlugCZ,

alter session set nls_sort=binary;
...
Рейтинг: 0 / 0
23.10.2009, 15:43
    #36269439
ddelete
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка длинных строк
Oracle9i Release 9.2.0.4.0 - Production
PL/SQL Release 9.2.0.4.0 - Production
CORE 9.2.0.3.0 Production
TNS for Solaris: Version 9.2.0.4.0 - Production
NLSRTL Version 9.2.0.4.0 - Production

Полет нормальный

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bi
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

Полет нормальный

Oracle9i Release 9.2.0.8.0 - Production
PL/SQL Release 9.2.0.8.0 - Production
CORE 9.2.0.8.0 Production
TNS for Solaris: Version 9.2.0.8.0 - Production
NLSRTL Version 9.2.0.8.0 - Production

Полет нормальный


Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bi
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Solaris: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

Полет нормальный

Вообщем везде, все хорошо...ну на винде к сожалению ничего нет, поэтому проверить не могу.
Походу все же у вас косяки с настройками.
...
Рейтинг: 0 / 0
23.10.2009, 15:46
    #36269453
KlugCZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка длинных строк
ddelete,

а можешь сказать какие nls_sort установлены?
у меня nls_sort=CZECH
если перевести на nls_sort=binary , то лечит, но это не выход.
...
Рейтинг: 0 / 0
23.10.2009, 15:47
    #36269454
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка длинных строк
-2-KlugCZ,

alter session set nls_sort=binary;

Чувствую, если SR будет заведён, то это будет ответным workaround. :) Хотя, ПМСМ, всё равно баг.

А Вы бы не могли указать источник знания про 1000 байт (символов), которые используются при сортировке?
...
Рейтинг: 0 / 0
23.10.2009, 15:48
    #36269462
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка длинных строк
suPPLerЧувствую, если SR будет заведёнБаг тянется еще с 8i, его лечили несколько раз, но, видимо, не везде полечили.
...
Рейтинг: 0 / 0
23.10.2009, 15:50
    #36269471
ddelete
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка длинных строк
KlugCZ,

Код: 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.
SQL> select value from nls_database_parameters where parameter = 'NLS_CHARACTERSET'
   2   union all
   3   select value from nls_database_parameters where parameter = 'NLS_NCHAR_CHARACTERSET'
   4   union all
   5   select value from nls_database_parameters where parameter = 'NLS_SORT'
   6   union all
   7   select value from nls_database_parameters where parameter = 'NLS_COMP'
   8   union all
   9   select * from v$version
  10   /
 
VALUE
----------------------------------------------------------------
WE8ISO8859P1
AL16UTF16
BINARY
BINARY
Oracle9i Release  9 . 2 . 0 . 4 . 0  - Production
PL/SQL Release  9 . 2 . 0 . 4 . 0  - Production
CORE	 9 . 2 . 0 . 3 . 0 	Production
TNS for Solaris: Version  9 . 2 . 0 . 4 . 0  - Production
NLSRTL Version  9 . 2 . 0 . 4 . 0  - Production
 
 9  rows selected
 
SQL> 
SQL> select value from nls_database_parameters where parameter = 'NLS_CHARACTERSET'
   2   union all
   3   select value from nls_database_parameters where parameter = 'NLS_NCHAR_CHARACTERSET'
   4   union all
   5   select value from nls_database_parameters where parameter = 'NLS_SORT'
   6   union all
   7   select value from nls_database_parameters where parameter = 'NLS_COMP'
   8   union all
   9   select * from v$version
  10   
SQL> /
 
VALUE
----------------------------------------------------------------
WE8ISO8859P1
AL16UTF16
BINARY
BINARY
Oracle Database 10g Enterprise Edition Release  10 . 2 . 0 . 1 . 0  - 64bi
PL/SQL Release  10 . 2 . 0 . 1 . 0  - Production
CORE	 10 . 2 . 0 . 1 . 0 	Production
TNS for Linux: Version  10 . 2 . 0 . 1 . 0  - Production
NLSRTL Version  10 . 2 . 0 . 1 . 0  - Production
 
 9  rows selected
 
SQL> 
SQL> select value from nls_database_parameters where parameter = 'NLS_CHARACTERSET'
   2   union all
   3   select value from nls_database_parameters where parameter = 'NLS_NCHAR_CHARACTERSET'
   4   union all
   5   select value from nls_database_parameters where parameter = 'NLS_SORT'
   6   union all
   7   select value from nls_database_parameters where parameter = 'NLS_COMP'
   8   union all
   9   select * from v$version
  10   /
 
VALUE
----------------------------------------------------------------
WE8ISO8859P1
AL16UTF16
BINARY
BINARY
Oracle9i Release  9 . 2 . 0 . 8 . 0  - Production
PL/SQL Release  9 . 2 . 0 . 8 . 0  - Production
CORE	 9 . 2 . 0 . 8 . 0 	Production
TNS for Solaris: Version  9 . 2 . 0 . 8 . 0  - Production
NLSRTL Version  9 . 2 . 0 . 8 . 0  - Production
 
 9  rows selected
 
SQL> 
...
Рейтинг: 0 / 0
23.10.2009, 15:58
    #36269496
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка длинных строк
На 11.1.0.7 Linux x64 desc-сортировка строк>1000символов при nls_sort=russian дает некорректный результат.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
with t as (
select lpad('a', 1001 ) x from dual
union all
select lpad('c', 1002 ) x from dual
union all
select lpad('b', 1003 ) x from dual
)
select ltrim(x)
from t 
order by x desc;

LTRIM(X)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
---------------
a                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
b                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
c                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

 3  rows selected
...
Рейтинг: 0 / 0
23.10.2009, 16:00
    #36269499
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка длинных строк
KlugCZddelete,

а можешь сказать какие nls_sort установлены?
у меня nls_sort=CZECH
если перевести на nls_sort=binary , то лечит, но это не выход.

Код: plaintext
1.
order by substr(a,      1 , 1000 ) desc
           ,substr(a, 1001 , 1000 ) desc
и ещё два раза
...
Рейтинг: 0 / 0
23.10.2009, 16:01
    #36269502
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка длинных строк
-2-,

1001,1002,1003->1001
...
Рейтинг: 0 / 0
23.10.2009, 16:07
    #36269523
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка длинных строк
orawishsubstr(a, 1,1000) descsubstr(a, 1, 999)
...
Рейтинг: 0 / 0
23.10.2009, 16:12
    #36269538
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка длинных строк
-2-На 11.1.0.7 Linux x64 desc-сортировка строк>1000символов при nls_sort=russian дает некорректный результат..

виндовозный 11.1.0.7 лажает аналогично
Код: 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.
Присоединен к:
Oracle Database 11g Enterprise Edition Release  11 . 1 . 0 . 7 . 0  - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select dbms_utility.port_string
   2     from sys.v_$database;

PORT_STRING
--------------------------------------------------------------------------------
IBMPC/WIN_NT- 8 . 1 . 0 

SQL> with t as (
   2   select lpad('a', 1001 ) x from dual
   3   union all
   4   select lpad('c', 1002 ) x from dual
   5   union all
   6   select lpad('b', 1003 ) x from dual
   7   )
   8   select ltrim(x)
   9   from t
  10   order by  NLSSORT(x, 'NLS_SORT = BINARY') desc;

LTRIM(X)
--------------------------------------------------------------------------------
a
c
b

SQL> with t as (
   2   select lpad('a', 1001 ) x from dual
   3   union all
   4   select lpad('c', 1002 ) x from dual
   5   union all
   6   select lpad('b', 1003 ) x from dual
   7   )
   8   select ltrim(x)
   9   from t
  10   order by  NLSSORT(x, 'NLS_SORT = RUSSIAN') desc;

LTRIM(X)
--------------------------------------------------------------------------------
a
b
c
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сортировка длинных строк / 25 сообщений из 31, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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