2009-08-28 2 views
3

У меня есть столбец в моей таблице, которая хранит строку (это текстовый столбец):MySql сорт подчеркивает последние

VARCHAR (16) latin1_swedish_ci

Проблема заключается в том, когда я говорю «ORDER BY name ASC ", он возвращает слова, начинающиеся с подчеркивания в конце. Это пример он вернулся:

-a 
-mmddd2 
-z 
-z3 
aaa 
b 
c 
t 
_a 
___- 

Могу поспорить, что я могу использовать PHP для сортировки, но есть простой способ сделать MYSQL поставить знак подчеркивания после тире? Я делаю это так, чтобы он соответствовал выводам функции сортировки javascript.

Я пытаюсь получить:

-a 
-mmddd2 
-z 
-z3 
_a 
___- 
aaa 
b 
c 
t 

ответ

5

Collations определяют порядок сортировки, если ни один из доступных параметров сортировки не используется порядок сортировки, что нужно вы можете определить свой собственный, как объяснено here.

+0

Ссылка больше не работает. –

+0

Спасибо, @MikeFlynn. Исправлены ссылки. –

1

Я не говорю, что это элегантное решение, но вы можете попробовать сделать что-то вроде этого:

select name 
from customers 
order by replace(name, '_', '-+') asc; 

Просто замените + с тем, что поставит префиксы значения подчеркивания после тира.

+3

Обратите внимание, что предложение ORDER BY, использующее вычисление, испортит преимущества индексов в своих полях. – ceejayoz

Смежные вопросы