mysql按名称排序asc ingore领先'the'

时间:2012-12-14 10:28:32

标签: mysql

我怎么能按顺序返回这些:

1: aaaa
2: bbbb
3: the cccc
4: dddd

忽略领先的'the'

目前正在使用。

select * from houses order by name asc

并按此顺序返回。

1: aaaa
2: bbbb
3: dddd
4: the cccc

由于

3 个答案:

答案 0 :(得分:2)

更正确但答案更慢的答案是:

ORDER BY CASE WHEN SUBSTR(name, 1, 4) = 'the ' THEN SUBSTR(name, 5) ELSE name END;

答案 1 :(得分:1)

如果您想删除订单的the,可以使用:

select id, name
from yourtable
order by replace(name, 'the ', '')

请参阅SQL Fiddle with Demo

或者:

select id, name
from yourtable
order by ltrim(replace(name, 'the', ''))

请参阅SQL Fiddle with Demo

甚至可以使用以下内容:

select id, name
from yourtable
order by 
  case 
    when substring(name, 1, 4) = 'the ' 
    then substring(name, 5) 
    else name end

请参阅SQL Fiddle with Demo

答案 2 :(得分:-1)

嘿Man它的升序意味着 a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z 。因为d在t之前出现,这就是为什么它首先回应它! ORDER BY只检查字符串的第一个字母,然后对它们进行排序。如果你想让他们订购如下:

1:aaaaa

2:bbbbb

3:ccccc

4:ddddd

然后根据您的喜好再创建一个具有整数类型的id的列,并为其添加自动增量属性,然后按升序排序!