|
|
|
| Здравствуйте, подскажите пожалуйста, как средствами mysql отсортировать список типа text, чтобы сначала шли строки, начинающиеся с букв в порядке (a-z), потом строки, начинающиеся с цифр в порядке (0-9). Интересует запрос, бес конфигурирования mysql.
Пример как надо:
Дима
Петя
Ян
13 друзей Оушена | |
|
|
|
|
|
|
|
для: serrr
(07.02.2011 в 18:02)
| | Можно поступить следующим образом
SELECT * FROM test
ORDER BY '^[0-9]+' REGEXP fld, fld;
|
где fld - поле тип text. | |
|
|
|
|
|
|
|
для: cheops
(07.02.2011 в 18:10)
| | шаблон регулярного выражения - правый аргумент операции REGEXP, а не левый. | |
|
|
|
|
|
|
|
для: Trianon
(07.02.2011 в 22:14)
| | Да, есть такое дело
SELECT * FROM test
ORDER BY fld REGEXP '^[0-9]+', fld;
|
| |
|
|
|
|
|
|
|
для: cheops
(07.02.2011 в 22:32)
| | Спасибо большое.
Возможно подскажите, где можно почитать про такой вариант ORDER BY поподробнее?
Хочу разобраться, как такое получилось. REGEX ясен, а как прошла верно сортировка не совсем. | |
|
|
|
|
|
|
|
для: serrr
(08.02.2011 в 11:38)
| | Да собственно, тут ничего сложного нет, в ORDER BY всегда можно указать несколько полей через запятую, сначала сортировка идет по первому полю, если в первом столбце имеются повторяющиеся значения, то сортировка в рамках этой группы идет по второму полю. По сути у нас получилось так
0, Дима
0, Петя
0, Ян
1, 13 друзей Оушена
|
Сначала идут записи с 0 (регулярное выражение не сработало), внутри этой группы сортировка по fld, потом записи c 1 (регулярное выражение сработало), внутри этой группы сортировка по fld. | |
|
|
|
|
|
|
|
для: cheops
(08.02.2011 в 11:42)
| | Все понятно. Еще раз спасибо. | |
|
|
|