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

Форум MySQL

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

 

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

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

тема: Сортировка: цифры после текста в поле text
 
 автор: serrr   (07.02.2011 в 18:02)   письмо автору
 
 

Здравствуйте, подскажите пожалуйста, как средствами mysql отсортировать список типа text, чтобы сначала шли строки, начинающиеся с букв в порядке (a-z), потом строки, начинающиеся с цифр в порядке (0-9). Интересует запрос, бес конфигурирования mysql.
Пример как надо:

Дима
Петя
Ян
13 друзей Оушена

  Ответить  
 
 автор: cheops   (07.02.2011 в 18:10)   письмо автору
 
   для: serrr   (07.02.2011 в 18:02)
 

Можно поступить следующим образом
SELECT * FROM test
ORDER BY '^[0-9]+' REGEXP fld, fld;

где fld - поле тип text.

  Ответить  
 
 автор: Trianon   (07.02.2011 в 22:14)   письмо автору
 
   для: cheops   (07.02.2011 в 18:10)
 

шаблон регулярного выражения - правый аргумент операции REGEXP, а не левый.

  Ответить  
 
 автор: cheops   (07.02.2011 в 22:32)   письмо автору
 
   для: Trianon   (07.02.2011 в 22:14)
 

Да, есть такое дело
SELECT * FROM test 
ORDER BY fld REGEXP '^[0-9]+', fld;

  Ответить  
 
 автор: serrr   (08.02.2011 в 11:38)   письмо автору
 
   для: cheops   (07.02.2011 в 22:32)
 

Спасибо большое.
Возможно подскажите, где можно почитать про такой вариант ORDER BY поподробнее?
Хочу разобраться, как такое получилось. REGEX ясен, а как прошла верно сортировка не совсем.

  Ответить  
 
 автор: cheops   (08.02.2011 в 11:42)   письмо автору
 
   для: serrr   (08.02.2011 в 11:38)
 

Да собственно, тут ничего сложного нет, в ORDER BY всегда можно указать несколько полей через запятую, сначала сортировка идет по первому полю, если в первом столбце имеются повторяющиеся значения, то сортировка в рамках этой группы идет по второму полю. По сути у нас получилось так
0, Дима
0, Петя
0, Ян
1, 13 друзей Оушена

Сначала идут записи с 0 (регулярное выражение не сработало), внутри этой группы сортировка по fld, потом записи c 1 (регулярное выражение сработало), внутри этой группы сортировка по fld.

  Ответить  
 
 автор: serrr   (08.02.2011 в 11:51)   письмо автору
 
   для: cheops   (08.02.2011 в 11:42)
 

Все понятно. Еще раз спасибо.

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

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