Главная страница
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]

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


 
armstrong   (2011-09-01 20:14) [41]

Anatoly Podgoretsky, я понимаю что вы подтолкнуть меня хочете к collation
я msdn почитал, посмотрел несколько сотен параметров и пока не понял.
- не могли бы подсказать как запрос составить?
- почему по умолчанию стоит телефонное сравнение?
- почему всё-таки A-A не вместе с А-студио, телефоны разные ? (:


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

> [40] asail ©   (01.09.11 20:14)
> Тока с чего бы винде в експлорере телепонное сравнение использовать?

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


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

> [41] armstrong   (01.09.11 20:14)
> почему всё-таки A-A не вместе с А-студио, телефоны разные
> ?

Да

АА
АААА
AСТУДИО


 
armstrong   (2011-09-01 20:17) [44]

TC не кривой думаю всё-таки (:
т.к имена папок делать телефонными номерами очень большая редкость, и той же винде должно быть понятно, что папки это просто строки. так что скорее винда кривая )

помогите правильно составить запрос да и закроем эту тему )


 
asail ©   (2011-09-01 20:19) [45]


> Inovet ©   (01.09.11 20:16) [42]

Оно естественно для номеров телефонов, а не для всех типов файлов. Наверное...


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

> [44] armstrong   (01.09.11 20:17)
> так что скорее винда кривая

Мозг у лидей так устроен


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

> [45] asail ©   (01.09.11 20:19)
> а не для всех типов файлов

Посмотри индекс в энциклопедии, какой-нибудь Нью-Йорк где будет, интересно.


 
Anatoly Podgoretsky ©   (2011-09-01 20:22) [48]

> asail  (01.09.2011 20:14:40)  [40]

Видимо из тех же соображений. Или прими как есть.


 
Anatoly Podgoretsky ©   (2011-09-01 20:23) [49]

> armstrong  (01.09.2011 20:14:41)  [41]

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


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

Из указателя Мифы народов мира
Москва Советская энциклопедия 1992

Абасы
Аба-хатан


 
Anatoly Podgoretsky ©   (2011-09-01 20:32) [51]

> asail  (01.09.2011 20:19:45)  [45]

Ну не будут они решать телефон это или нет.
Если ты не в курсе, то американцы любят буквы, а не цифры в номерах.
Ну тупые (с)


 
asail ©   (2011-09-01 20:34) [52]


> Anatoly Podgoretsky ©   (01.09.11 20:32) [51]

> Ну тупые (с)

Наоборот. Букав больше, чем цифр... :)


 
Anatoly Podgoretsky ©   (2011-09-01 20:35) [53]

Тире в основном вставляет для улучшения чтения, для разбивки и является незначищим символом, просто на примере с телефонами так понятное.
Естественно никто не будет делать разную обработку для файлов, основываясь только на мнение отдельного программиста. Иногда позволяют сделать выбор, но все равно для всех одинаково, а не выборочно, эти файлы так, а эти иначе.


 
asail ©   (2011-09-01 20:38) [54]


> Anatoly Podgoretsky ©   (01.09.11 20:35) [53]

Да понятно все... Как-то не обращал раньше на это внимание. Но, спасибо - приму к сведению...


 
armstrong   (2011-09-01 20:42) [55]

вы это расскажите Задорнову (:

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

я даже не могу понять как прочитать список в ADO доступных параметров collations.

есть ли она fn_helpcollations в ADO и если да то как прочитать?

от фонарая что нашел в нете подставлял:

 mySQL = "select kod, naimen from "+myNaimenTable+#13+
         "order by naimen"+#13+
         "COLLATE Latin1_General_CS_AS_KS_WS ASC";

получал в ответ "Неопознанная ошибка"

ай нид хелп!


 
armstrong   (2011-09-01 21:01) [56]

хм.. изменение типа поля решило проблему

    ADOConnection1.Execute("create table "+myNaimenTable+" ("+
    "kod Integer PRIMARY KEY,"+
    "naimen varchar"+
    ")");

а как же быть всё-таки со строкой?


 
armstrong   (2011-09-01 21:10) [57]

прошу прощения, varchar ничего не решил.. уже моск кипит..


 
Inovet ©   (2011-09-01 21:10) [58]

При создании таблицы укажи или для всей базы.


 
armstrong   (2011-09-01 21:28) [59]

при создании базы , например
"Jet OLEDB:COLLATE Latin1_General_BIN;"
матюкается "Невозможно найти устанавливаемый ISAM"

на создании таблицы не знаю пока что как можно указать collate


 
Anatoly Podgoretsky ©   (2011-09-02 09:33) [60]

> armstrong  (01.09.2011 21:01:56)  [56]

А где здесь collation?


 
Anatoly Podgoretsky ©   (2011-09-02 09:34) [61]

> armstrong  (01.09.2011 21:28:59)  [59]

Да такого ISAM нет


 
Anatoly Podgoretsky ©   (2011-09-02 09:36) [62]


> Ega23 ©   (01.09.11 11:29) [14]
>
> 1. Тип СУБД.

100 евро


 
armstrong   (2011-09-02 12:33) [63]

Anatoly Podgoretsky ©, может поможете если знаете как?


 
Омлет ©   (2011-09-02 12:39) [64]

Тип СУБД - секретная информация.


 
Anatoly Podgoretsky ©   (2011-09-02 13:11) [65]

Партизанам помощи нет


 
armstrong   (2011-09-02 13:19) [66]

почему я партизан?

вы же код видели приведенный мной,
через Microsoft Jet, который является ядром СУБД Microsoft Access, втроенной в винду.

возможно я не сильно грамотен в этом плане..


 
Ega23 ©   (2011-09-02 13:22) [67]


>  Microsoft Jet, который является ядром СУБД Microsoft Access,
>  втроенной в винду



………………..,-~*’`&#175;lllllll`*~,
…………..,-~*`lllllllllllllllllllllllllll&#175;`*-,
………,-~*llllllllllllllllllllllllllllllllllllllllllll*-,
……,-*llllllllllllllllllllllllllllllllllllllllllllllllllllll.\
….;*`lllllllllllllllllllllllllll,-~*~-,llllllllllllllllllll\
…..\lllllllllllllllllllllllllll/………\;;;;llllllllllll,-`~-,
……\lllllllllllllllllllll,-*………..`~-~-,…(.(&#175;`*,`,
…….\llllllllllll,-~*…………………)_-\..*`*;..)
……..\,-*`&#175;,*`)…………,-~*`~.……………/
………|/…/…/~,……-~*,-~*`;……………./.\
……../…/…/…/..,-,..*~,.`*~*…………….*…\
…….|…/…/…/.*`…\………………………)….)&#175;`~,
…….|./…/…./…….)……,.)`*~-,…………/….|..)…`~-,
……/./…/…,*`-,…..`-,…*`….,---……\…./…../..|………&#175;```*~-
……(……….)`*~-,….`*`.,-~*.,-*……|…/.…/…/…………\
…….*-,…….`*-,…`~,..``.,,,-*……….|.,*…,*…|……\
……….*,………`-,…)-,…………..,-*`…,-*….(`-,…


 
armstrong   (2011-09-02 13:23) [68]

и насколько я понимаю Microsoft Jet это не настоящая СУБД.
поэтому и не знаю как ответить на ваш вопрос..


 
armstrong   (2011-09-02 13:25) [69]

Ega23 ©, это рисунок ?
хоть нихрена не понятно, но наверное касается моих познаний..


 
Anatoly Podgoretsky ©   (2011-09-02 15:19) [70]

> armstrong  (02.09.2011 13:19:06)  [66]

Потому что потребовалось 66 постов, что бы привести используемую СУБД, думаю
если бы не наша настойчивость, то мы бы этого не узнали совсем.
Collation ты сможешь использовать только в ADOX, вряд ли это тебе по силам.


 
armstrong   (2011-09-02 16:13) [71]

ну я ведь создаю базу через ADOX.
подскажите какого провайдера тогда использовать и как будет выглядеть запрос создания базы с параметром COLLATE  ?

function CreateDatabase(DatabaseName: String): Boolean;
var
 cat: OLEVariant;
begin
 Result:= true;
 try
   cat:= CreateOleObject("ADOX.Catalog");
   cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + DatabaseName + ";Jet OLEDB:Engine Type=5");
   cat:= null;
 except
   on e: Exception do begin
      ShowMessage(e.message);
      result:= false;
   end;
 end;
end;


 
armstrong   (2011-09-02 16:34) [72]

я как понял Microsoft.Jet урезанный и ничего с сортировкой в моём случаи сделать нельзя?

мне не хотелось бы, что бы программа требовала дополнительную установку чего либо.
с виндой что идет кроме Microsoft.Jet.OLEDB ?


 
armstrong   (2011-09-02 16:42) [73]

"Collation ты сможешь использовать только в ADOX"

совершенно не понимаю вышу мысль!
что такое ADOX?
может вы хотели сказать что через провайдера текущего "Microsoft.Jet.OLEDB.4.0"  я не смогу использовать Collation ?

вообщем насколько я понял вы сами нихрена не знаете..
тему можете закрывать..


 
Anatoly Podgoretsky ©   (2011-09-02 16:53) [74]

> armstrong  (02.09.2011 16:13:11)  [71]

А я не использую ADOX


 
Anatoly Podgoretsky ©   (2011-09-02 16:54) [75]

> armstrong  (02.09.2011 16:34:12)  [72]

Не урезаный, а особенный, до эры SQL, такой старик



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

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

Наверх




Память: 0.66 MB
Время: 0.011 c
15-1314168862
OW
2011-08-24 10:54
2011.12.18
Два простых вопроса по Oracle и PL/SQL Developer


1-1277298765
granulated
2010-06-23 17:12
2011.12.18
EInvalidPointer после выхода из функции.


4-1252399230
Jeyson
2009-09-08 12:40
2011.12.18
одно и тоже консольное приложение работает по разному


11-1240042285
imp
2009-04-18 12:11
2011.12.18
Перемещение закладок в TKOLTabControl


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