2014-10-14 5 views
1

давайте предположим, что мы имеем определенную таблицу, содержащую столбец «имя» со следующими строками:заказ на определенный характер

'A' 
'K' 
'_C' 
'_B' 

есть способ заказать его в алфавитном порядке и размещая имена, которые приходят с подчеркиванием '_' сначала (в алфавитном порядке), используя ORDER BY на MySQL? так что результат будет:

'_B' 
'_C' 
'A' 
'K' 
+0

его точно так же, как вы обычно делали бы. ORDER BY [field] –

+1

согласно диаграмме ascii http://www.asciitable.com/, '' _'' (95) меньше, чем '' a'' (97), поэтому он по умолчанию будет представлен в алфавитном порядке , однако '' _'' (95) больше, чем '' A'' (65), поэтому капитал будет первым. По существу «A» <'_' <'a''. –

+0

спасибо, что указал, @LoganMurphy. это была моя ошибка, чтобы помещать символы в нижний регистр. изм. – flpost

ответ

1
order by 
     case when substr(mystring, 0,1) = '_' then 0 else 1 end 
     , mystring 

(не проверял, но вы получите идею)

т.е. вы первый заказ на начинается ли не строка с символом «_» или нет, а затем на самой строке.

Как указывали другие, ваш пример делает это ненужным, но так вы бы это сделали в целом. Например, вы можете заказать все 5-значные слова первым таким же образом:

order by 
     case when length(mystring) = 5 then 0 else 1 end 
     , mystring 
Смежные вопросы