我们假设我们有一个包含'名称'包含以下行的列:
'A'
'K'
'_C'
'_B'
有没有办法按字母顺序排序,并放置带有下划线的名称' _'首先(按字母顺序)在MySQL上使用ORDER BY?所以输出将是:
'_B'
'_C'
'A'
'K'
答案 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