Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.12.18;
Скачать: CL | DM;

Вниз

SQL order by   Найти похожие ветки 

 
armstrong   (2011-08-31 23:34) [0]

подскажите пожалуйста, ADO, при упорядочивании (ASC) имею список:
АБВ
А-А

почему А-А стоит ниже?
ведь код - (2D) менее Б

и как сделать что бы было
А-А
АБВ  ?


 
Ega23 ©   (2011-09-01 01:10) [1]

дай обе строки в Hex-значениях


 
Юрий Зотов ©   (2011-09-01 01:17) [2]

desc?
:o)


 
armstrong   (2011-09-01 01:32) [3]

С0 С1 С2
С0 2В С0


 
Inovet ©   (2011-09-01 05:47) [4]

Может collation какой левый указан?


 
Ega23 ©   (2011-09-01 08:40) [5]


> С0 С1 С2
> С0 2В С0


Это точно? Или ты сейчас ручками по таблице символов переводил?


 
armstrong   (2011-09-01 08:45) [6]

не могли бы вы без ироний подсказать свою версию,
я бы проверил


 
Медвежонок Пятачок ©   (2011-09-01 09:09) [7]

ведь код - (2D) менее Б

Зато код A менее А


 
Медвежонок Пятачок ©   (2011-09-01 09:19) [8]

Это точно? Или ты сейчас ручками по таблице символов переводил?

Может и точно.
Он же не оговорит, что ордер бай у него сделан по тому же самому полю, чьи значения он здесь привел.


 
armstrong   (2011-09-01 09:25) [9]

Медвежонок Пятачок ©,
немножко не понял вашу мысль..

Ega23 ©, может вы имеете ввиду то, что в другой кодировке храняться данные в базе?
но по-моему код hyphen-minus будет всегда меньше, в какой кодировке не были бы.

Inovet ©, в collation не лез, всё по умолчанию..


 
armstrong   (2011-09-01 09:40) [10]

может и правда с collation  нужно было поиграться?
я так понимаю все параметры можно посмотреть в fn_helpcollations() ?


 
armstrong   (2011-09-01 09:50) [11]

Медвежонок Пятачок ©, конечно же order by по этому полю и делаю, откуда и возникает такой вопрос..


 
Ega23 ©   (2011-09-01 10:31) [12]


> может вы имеете ввиду то, что в другой кодировке храняться
> данные в базе?
> но по-моему код hyphen-minus будет всегда меньше, в какой
> кодировке не были бы.


Я имею ввиду ровно то, что имею ввиду.
Прочитай посимвольно строку и выдай сюда результат в hex. Может быть у "A-A" сзади пробел или символ табуляции? Может быть у "AБВ" первый символ - латинский. Можеь быть это не тире, а короткое тире.
StrComp и AnsiStrComp показывают, что "АБВ" > "А-А". Поэтому давай сюда реальные hex-значения строк, а не твои предположения "по-моему"


 
armstrong   (2011-09-01 11:25) [13]

Ega23 ©,

000000: C0 C1 C2
000000: C0 2D C0

тут даже проблема не в том.. это я для примера..
столкнулся с тем, что папки сканирую и кидаю в таблицу.
в тотале том же смотрю папки - первая идет А-.... затем уже типа Абв...
в таблице же (по order by выбор)) смотрю папка А- стоит на последнем месте.
проверяю код, - при сканировании директорий система её первую находит и первую я добавляю в базу.
немножко для меня это важно, поэтому хотел уточнить почему так и как с этим бороться.
проверял только под ADO


 
Ega23 ©   (2011-09-01 11:29) [14]


> в таблице же (по order by выбор)) смотрю папка А- стоит
> на последнем месте.


1. Тип СУБД.
2. Скрипт создания таблицы.
3. Код добавления данных в БД.


 
Медвежонок Пятачок ©   (2011-09-01 11:34) [15]

такой простой вопрос, а поставил автора в тупик.

встретил странное - локализуй причину чуда.

убери адо, сделай запрос в нативном инструменте.
убери сканирование папапок, - сделай явный инсерт С0 С1 С2, С0 2В С0
и так далее.


 
armstrong   (2011-09-01 11:42) [16]

спасибо за ответы, просто дома балуюсь вечерами.
прийду с работы попробую обязательно и отпишусь


 
Ega23 ©   (2011-09-01 13:26) [17]


> в тотале том же смотрю папки - первая идет А-.... затем
> уже типа Абв...

Кстати. Total Commander на Delphi написан. Соответственно, порядок должен совпадать (по-идее).
Интересный вопрос.
Давай вечером вываливай сюда всю подноготную:
1. Тип СУБД
2. Скрипт создания таблицы.
3. Код сканирования директории.
4. Код добавления данных в СУБД.
5. Код выборки данных из СУБД (с телом запроса).
6. Код сортировки данных на клиенте.
7. Сами данные: 3 директории с именами А-А, АБВ и ещё какую-нибудь. Только файлы внутри удали. Заархивируй и выложи куда-нить.


 
Anatoly Podgoretsky ©   (2011-09-01 13:44) [18]


> не могли бы вы без ироний подсказать свою версию,

Тебе же сказали Collation


 
Anatoly Podgoretsky ©   (2011-09-01 13:45) [19]


> Он же не оговорит, что ордер бай у него сделан по тому же
> самому полю, чьи значения он здесь привел.

Он вообще партизан и хулиган, почему то считает, что это к программированию в Дельфи как то относится.


 
Anatoly Podgoretsky ©   (2011-09-01 13:46) [20]


> Inovet ©, в collation не лез, всё по умолчанию..

То есть у тебя английская collation что ли? И чего ты тогда хочешь?


 
Ega23 ©   (2011-09-01 13:47) [21]


> Тебе же сказали Collation


Разве collation должен играть какую-то роль при сортировке на клиенте? По-идее - strcmp и вперёд с песней.
Хотя может всё печальней оказаться.


 
Anatoly Podgoretsky ©   (2011-09-01 13:49) [22]


> armstrong   (01.09.11 11:25) [13]
> Ega23 ©,
>
> 000000: C0 C1 C2
> 000000: C0 2D C0
>
> тут даже проблема не в том.. это я для примера..
> столкнулся с тем, что папки сканирую и кидаю в таблицу.
> в тотале том же смотрю папки - первая идет А-.... затем
> уже типа Абв...

АБВ <> Абв

специально запутываешь?


 
Ega23 ©   (2011-09-01 13:53) [23]


> То есть у тебя английская collation что ли? И чего ты тогда хочешь?


А какая разница? Если в гексе всё именно так, как ТС привёл
000000: C0 C1 C2
000000: C0 2D C0
то, по-идее, что win1251, что какая другая. Первая строка будет больше, чем вторая, тупо по побайтному сравнению.


> АБВ <> Абв


Это да. Но изначально вопрос был про "А-А" и "АБВ". Я-ж ещё ночью засомневался, проверил тупо по StrComp и AnsiStrComp. "А-А" - в обоих случаях меньше.


 
Anatoly Podgoretsky ©   (2011-09-01 13:59) [24]

> Ega23  (01.09.2011 13:53:23)  [23]

Не надо побитно сравнивать, если collation не BIN-xxxx


 
Inovet ©   (2011-09-01 14:37) [25]

> [21] Ega23 ©   (01.09.11 13:47)
> Разве collation должен играть какую-то роль при сортировке
> на клиенте?

Почему на клиенте, когда в ORDER BY.

> [23] Ega23 ©   (01.09.11 13:53)
> А какая разница? Если в гексе всё именно так, как ТС привёл
> 000000: C0 C1 C2
> 000000: C0 2D C0

Все русские будут равны 00 при сравнении.
Что-нибудь такое
000000: 00 00 00
000000: 00 2D 00


 
Ega23 ©   (2011-09-01 14:40) [26]


> Все русские будут равны 00 при сравнении.


Оп-па... Это точно?
Я просто с такой фигнёй ни разу не сталкивался. Какой collate на столбец надо наложить для, допустим, MSSQL? Ну для 2005 или 2008 (других под рукой нет).


 
Inovet ©   (2011-09-01 15:15) [27]

> [26] Ega23 ©   (01.09.11 14:40)
> Какой collate на столбец надо наложить для, допустим, MSSQL?

Не могу сказать, надо смотреть, как там. Но в общем, не только в MSSQL, эффекты всякие могут быть. Кстати, может быть и АБВ = Абв.


 
Ega23 ©   (2011-09-01 15:44) [28]


>  Кстати, может быть и АБВ = Абв.


Collation с CI на CS поменять.
З.Ы. помню, долго с этой фигнёй мучился, пару дней искал.
З.З.Ы. Да, походу проблема действительно в Collation.


 
Anatoly Podgoretsky ©   (2011-09-01 16:15) [29]

> Inovet  (01.09.2011 15:15:27)  [27]

Я обычно использую ххх_CI_AS но потому мне так надо. Он еще учитывает
телефонную сортировку 11-123 и 11123 равные строки


 
armstrong   (2011-09-01 19:09) [30]

ну вот посмотрите, набросал быстро код, выложил на  http://ifolder.ru/25510211

у меня сортирует так:

A-A
AAAA
A-СТУДИО
АЮЮ

почему  A-СТУДИО не идет за А-А ?


 
armstrong   (2011-09-01 19:12) [31]

хм.. в проводнике так же отображаются папки как и в проге..
а в total commandere

A-A
A-СТУДИО
...

ещё больше запутался ))


 
asail ©   (2011-09-01 19:38) [32]


> armstrong   (01.09.11 19:09) [30]

Может, все ж у тебя в 2-х первых строках буква А англицкая, а в 2-х следующих - русские? Замени всюду "А" на что-то более однозначное: "Б" например...


 
Inovet ©   (2011-09-01 19:58) [33]

> [32] asail ©   (01.09.11 19:38)
> Может, все ж у тебя в 2-х первых строках буква А англицкая,
> а в 2-х следующих - русские?

В архиве все русские.


 
armstrong   (2011-09-01 20:02) [34]

да русские в том-то и дело..
непойму почему и винда в проводнике так же криво сортирует..
а может тут какой-то сокрыльный смысл..
пока не нашел смысла..
а как сделать
A-A
A-СТУДИО
в списке - вообще и мыслей нет..


 
Inovet ©   (2011-09-01 20:09) [35]

> [34] armstrong   (01.09.11 20:02)

У винды применение интеллекта для сортировки достает, поэтому очень редко через эксплорер смотрю.


 
Медвежонок Пятачок ©   (2011-09-01 20:09) [36]

A-A
A-СТУДИО


a-a = ""
a-студио = <> ""

:)


 
Anatoly Podgoretsky ©   (2011-09-01 20:10) [37]

> armstrong  (01.09.2011 19:09:30)  [30]

Потому что у тебя телефонное сравнение. тире игнорируется. и у тебя
отсортировано как

AA
AAAA
AСТУДИО
АЮЮ

Очень удобная сортировка для телефонов


 
Inovet ©   (2011-09-01 20:12) [38]

> [29] Anatoly Podgoretsky ©   (01.09.11 16:15)
> Он еще учитывает телефонную сортировку 11-123 и 11123 равные строки


 
Anatoly Podgoretsky ©   (2011-09-01 20:13) [39]

> armstrong  (01.09.2011 19:12:31)  [31]

Сделай вывод, что TC кривой


 
asail ©   (2011-09-01 20:14) [40]


> Anatoly Podgoretsky ©   (01.09.11 20:10) [37]

Похоже на правду... Тока с чего бы винде в експлорере телепонное сравнение использовать?



Страницы: 1 2 вся ветка

Текущий архив: 2011.12.18;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.011 c
15-1314943782
Дмитрий С
2011-09-02 10:09
2011.12.18
"Любую точку выпуклой функции можно назвать экстремумом."


15-1314819288
armstrong
2011-08-31 23:34
2011.12.18
SQL order by


1-1277897030
Tangar83
2010-06-30 15:23
2011.12.18
Ошибка при использовании TWebBrowser


1-1277278827
azatsh
2010-06-23 11:40
2011.12.18
как открыть dll засунутую вexe шник как ресурс


2-1315811090
Scott Storch
2011-09-12 11:04
2011.12.18
возвратить пустой dataset