powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сортировка длинных строк
25 сообщений из 31, страница 1 из 2
Сортировка длинных строк
    #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
Сортировка длинных строк
    #36269267
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KlugCZМожет кто-нибудь подсказать почему происходит неверная сортировка в запросе:В чём её "неверность"? И ка бы тебе хотелось?
http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
...
Рейтинг: 0 / 0
Сортировка длинных строк
    #36269301
KlugCZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicВ чём её "неверность"? И ка бы тебе хотелось?
http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM

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

З.Ы. если вам нечего ответить по существу, то лучше промолчите.
...
Рейтинг: 0 / 0
Сортировка длинных строк
    #36269310
Алымов Анатолий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня "верная"
...
Рейтинг: 0 / 0
Сортировка длинных строк
    #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
Сортировка длинных строк
    #36269336
KlugCZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
suPPLer,
вот вот, абсолютно случайно на это наткнулся.
...
Рейтинг: 0 / 0
Сортировка длинных строк
    #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
Сортировка длинных строк
    #36269341
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверил SQL*Plus, спульнул в файлик - та же лажа. Вначале строка с 143 в конце, потом с 144, потом с 142 - и дальше, как должно быть, по убывающей.
-------------------------------------------------------
When I say "RTFM" or "STFF" or "STFW",
the third letter means "Following" or "Fine"...
...
Рейтинг: 0 / 0
Сортировка длинных строк
    #36269343
KlugCZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
suPPLer,
кстати тоже при p>144 начинается чихарда.
...
Рейтинг: 0 / 0
Сортировка длинных строк
    #36269375
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit + PL/SQL Developer - тоже неверная сортировка
...
Рейтинг: 0 / 0
Сортировка длинных строк
    #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
Сортировка длинных строк
    #36269384
Фотография hell
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня нормально всё
__________________
For more information, please proceed to http://ot-e.biz
...
Рейтинг: 0 / 0
Сортировка длинных строк
    #36269386
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
suPPLerПри :p >= 144 (в моём случае) первые строки результата отсортированы как попало.Не совсем так. Все строки отсортированы "правильно", только в сортировке участвуют первые 1000 байт (?символов).
...
Рейтинг: 0 / 0
Сортировка длинных строк
    #36269395
KlugCZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
suPPLer,
в самом начале отписал версию Oracle 10.2.0.4.0 (щас на винде Ентерпрайз), дома на линухе Стандарт Ван с лицензией и поддержкой, так что прогоню дома и отпишу в саппорт.
Сразу подумал, что мож у меня какие-нить нлс настройки неверно стоят или еще че подобного, но даже гугл ничего о таких случаях не сказал.
...
Рейтинг: 0 / 0
Сортировка длинных строк
    #36269424
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KlugCZ,

alter session set nls_sort=binary;
...
Рейтинг: 0 / 0
Сортировка длинных строк
    #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
Сортировка длинных строк
    #36269453
KlugCZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ddelete,

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

alter session set nls_sort=binary;

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

А Вы бы не могли указать источник знания про 1000 байт (символов), которые используются при сортировке?
...
Рейтинг: 0 / 0
Сортировка длинных строк
    #36269462
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
suPPLerЧувствую, если SR будет заведёнБаг тянется еще с 8i, его лечили несколько раз, но, видимо, не везде полечили.
...
Рейтинг: 0 / 0
Сортировка длинных строк
    #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
Сортировка длинных строк
    #36269496
Фотография -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
Сортировка длинных строк
    #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
Сортировка длинных строк
    #36269502
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-,

1001,1002,1003->1001
...
Рейтинг: 0 / 0
Сортировка длинных строк
    #36269523
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orawishsubstr(a, 1,1000) descsubstr(a, 1, 999)
...
Рейтинг: 0 / 0
Сортировка длинных строк
    #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
25 сообщений из 31, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сортировка длинных строк
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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