Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Отсортировать по алфавиту


Автор: Gold Dragon 12.9.2011, 10:01
В таблице есть поле (название статьи). Помогите составить запрос сортировки по алфавиту.
Проблема в том чтобы игнорировались кавычки, тире, пробелы

например должно получиться тип такого

Али-баба и 40 разбойников
Братия
- Лютики-цветочки
"Название" чего-то
Юлиана

а не такое
- Лютики-цветочки
"Название" чего-то
Али-баба и 40 разбойников
Братия
Юлиана

Автор: igorold 15.9.2011, 14:30
Код

select  Tema, REPLACE(REPLACE(REPLACE(Tema, '-', ''), ' ', ''),'\"','') from Table order by 2;

Автор: Gold Dragon 16.9.2011, 07:01
а по проще никак?

Автор: igorold 16.9.2011, 07:48
Проще - только создать поле сортировки, куда записывать тему без "лишних" символов.

Автор: Akina 16.9.2011, 08:00
Цитата(Gold Dragon @  16.9.2011,  08:01 Найти цитируемый пост)
а по проще никак? 

Написать свою UDF-ку и использовать её.

Автор: Gold Dragon 16.9.2011, 12:19
а может как-то через регулярку.. правда в них я не понимаю

Автор: rodnover 16.9.2011, 12:27
не умеет еще MySQL заменять через регулярку. Без UDF

Автор: Akina 16.9.2011, 14:15
Цитата(Gold Dragon @  16.9.2011,  13:19 Найти цитируемый пост)
а может как-то через регулярку.. 

Единственное, что умеет MySQL с регулярками - это проверить, соответствует ли строка регулярному выражению, и дать ответ в форме "да/нет". Для замены и сортировки этот результат явно непригоден.

Автор: Данкинг 16.9.2011, 14:54
Вообще-то предварительно создать "чистое" поле - это наиболее логичный вариант.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)