Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2011.12.18;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.004 c
15-1314592325
Дмитрий С
2011-08-29 08:32
2011.12.18
Целочисленное деление mysql и...


2-1315587791
Rucosinus
2011-09-09 21:03
2011.12.18
Просмотр шрифтов из папки


4-1252931571
MultIfleX
2009-09-14 16:32
2011.12.18
bluetooth


2-1315648401
Pushok
2011-09-10 13:53
2011.12.18
При закрытии Delphi вылетает AV


3-1268739476
Rob
2010-03-16 14:37
2011.12.18
СУБД с возможностью хранения текстовых документов в сжатом виде.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский