0

我怎样才能按这个顺序返回这些:

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

谢谢

4

3 回答 3

2

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

ORDER BY CASE WHEN SUBSTR(name, 1, 4) = 'the ' THEN SUBSTR(name, 5) ELSE name END;
于 2012-12-14T10:48:41.330 回答
1

如果你想删除the订单,那么你可以使用:

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

请参阅带有演示的 SQL Fiddle

或者:

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

请参阅带有演示的 SQL Fiddle

甚至使用以下内容:

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

请参阅带有演示的 SQL Fiddle

于 2012-12-14T10:34:58.733 回答
-1

Hey 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:啊啊啊

2:bbbb

3:cccc

4:dddd

然后再制作一列整数类型的id,根据您的口味取值,并为其添加自动增量属性,然后按升序排列它们!

于 2012-12-14T10:32:44.500 回答