Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Неправильная cортировка цифр, хранящихся в поле типа longtext
 
 автор: vilk   (26.04.2011 в 12:57)   письмо автору
 
 

делаю сортировку по полю типа - longtext. от 1 до 9 сортирует хорошо, а вот дальше значение 10 и 11 стают вторымы после единички, а должны стоять в конце. Почему так происходит и как это обойти?

Вот запрос - SELECT *
FROM `wp_postmeta`
WHERE meta_key = '_acf_sort'
ORDER BY meta_value ASC
LIMIT 0 , 30

А вот, что выводит - http://www.imagepost.ru/?v=sort.jpg

  Ответить  
 
 автор: cheops   (26.04.2011 в 12:59)   письмо автору
 
   для: vilk   (26.04.2011 в 12:57)
 

Строки, в отличие от цифр сортируются, начиная с первых символов, а не последних. Лучше изменить тип longtext на числовой, например, int (особенно, если вы собираетесь хранить там только цифры).

  Ответить  
 
 автор: vilk   (26.04.2011 в 13:05)   письмо автору
 
   для: cheops   (26.04.2011 в 12:59)
 

К сожалению не могу изменить тип поля на int так как в некоторых случаях это поле хранит текст. Так движок сделан.

Может можно обойти ограничение так чтобы longtext нормально сортировался?

  Ответить  
 
 автор: cheops   (26.04.2011 в 13:14)   письмо автору
 
   для: vilk   (26.04.2011 в 13:05)
 

Попробуйте следующий прием - добавьте число к строковой величине, чтобы вызвать автоматическое приведение типа
SELECT *
FROM `wp_postmeta`
WHERE meta_key = '_acf_sort'
ORDER BY (0 + meta_value) ASC
LIMIT 0 , 30

  Ответить  
 
 автор: vilk   (26.04.2011 в 14:18)   письмо автору
 
   для: cheops   (26.04.2011 в 13:14)
 

Отлично. Большое спасибо!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования