Форум: "Прочее";
Текущий архив: 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]
Похоже на правду... Тока с чего бы винде в експлорере телепонное сравнение использовать?
← →
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,
> втроенной в винду
………………..,-~*’`¯lllllll`*~,
…………..,-~*`lllllllllllllllllllllllllll¯`*-,
………,-~*llllllllllllllllllllllllllllllllllllllllllll*-,
……,-*llllllllllllllllllllllllllllllllllllllllllllllllllllll.\
….;*`lllllllllllllllllllllllllll,-~*~-,llllllllllllllllllll\
…..\lllllllllllllllllllllllllll/………\;;;;llllllllllll,-`~-,
……\lllllllllllllllllllll,-*………..`~-~-,…(.(¯`*,`,
…….\llllllllllll,-~*…………………)_-\..*`*;..)
……..\,-*`¯,*`)…………,-~*`~.……………/
………|/…/…/~,……-~*,-~*`;……………./.\
……../…/…/…/..,-,..*~,.`*~*…………….*…\
…….|…/…/…/.*`…\………………………)….)¯`~,
…….|./…/…./…….)……,.)`*~-,…………/….|..)…`~-,
……/./…/…,*`-,…..`-,…*`….,---……\…./…../..|………¯```*~-
……(……….)`*~-,….`*`.,-~*.,-*……|…/.…/…/…………\
…….*-,…….`*-,…`~,..``.,,,-*……….|.,*…,*…|……\
……….*,………`-,…)-,…………..,-*`…,-*….(`-,…
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.63 MB
Время: 0.006 c