Показать сообщение отдельно
Старый 25.08.2010, 19:47   #14  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,715 / 1204 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Logger Посмотреть сообщение
Это сильно! А другой Collation не пробовали ?
Пробовали, конечно. В последнем сообщении приведен тестовый пример, как можно посмотреть при каком Collation какой порядок сортировки будет. Например, при Cyrillic_General_CI_AS все "как положено". Пустое значение и пробел считаются самыми маленьким символами.

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

Цитата:
Сообщение от Logger Посмотреть сообщение
Опасный баг. Это же может вылезти в куче мест.
Ну, это вряд ли. Типичная ситуация, когда это вылезает - это сравнение на пустоту. Мало кому в голову приходит сравнивать символьные строки на больше/меньше. Более того, должно быть не просто сравнение на пустоту, но и содержимое поля должно начинаться с символа дефиса. Достаточно редкая ситуация

Собственно, именно поэтому и не поменяли Collation на сервере. Просто не возникает проблемных ситуаций по данной причине. А там, где это надо учитывать (ну в очень специфических ситуациях) делаем специальный обход.

Цитата:
Сообщение от Logger Посмотреть сообщение
Все таки странно каким чудом дефис оказался меньше пустой строки. По логике не должно так быть. Это скорее всего бага в БД.
Не уверен, что это именно бага. Скорее просто еще один вариант сортировки

Цитата:
Сообщение от Logger Посмотреть сообщение
Интересно а что будет, если в коде Аксапты вместо
X++:
select MyTab where MyTab.MyField
поставить
X++:
select MyTab where MyTab.MyField>'-'
Так понятно, что будет. Если пустое значение больше, чем дефис, то в выборку попадут все поля с пустым значением поля

Последний раз редактировалось Владимир Максимов; 25.08.2010 в 19:58.