Есть текстовое поле, по которому данные сортируются. В поле могут быть следующие символы:
-0123456789
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
ЁАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ
абвгдежзийклмнопрстуфхцчшщъыьэюяё
Сортировка в БД меня не устраивает: я хотел бы, чтобы порядок сортировки был таким:
АаБбВвГгДдЕеЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя
AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz
0123456789
При этом важно, чтобы Е и Ё рассматривались как один и тот же символ, а дефис - не учитывался.
Как подобное можно организовать в MySQL?
order by replace(myfield,'ё','е')
Очень небыстро, но оно-таки отсортирует. Хотите быстрее - копайте настройки кодировки или создавайте еще один столбец со строкой, в которой е и ё уже были заменены на е.
Копать стоит в сторону collation. Где посмотреть порядок символов в каждой из них - не знаю. И не уверен, что удастся "Е и Ё рассматривались как один и тот же символ, а дефис - не учитывался."
Update: хотя нет, вот есть просмотр таблиц http://collation-charts.org/mysql60/mysql604.utf8_unicode_ci.european.html. А с дефисами можно расправиться как-то так
SELECT REPLACE(columnname, "-", "") as c FROM T ORDER BY c
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости