按某个角色排序

时间:2014-10-14 14:40:35

标签: mysql sql sql-order-by

我们假设我们有一个包含'名称'包含以下行的列:

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

有没有办法按字母顺序排序,并放置带有下划线的名称' _'首先(按字母顺序)在MySQL上使用ORDER BY?所以输出将是:

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

1 个答案:

答案 0 :(得分: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