如何在sql中排序,如123

umuewwlo  于 2021-07-29  发布在  Java
关注(0)|答案(2)|浏览(521)

我需要按如下顺序排列列:

1 
2 
10 
100 
Ape
Cat
Elephant
Whatever

有人能帮我吗?

deikduxw

deikduxw1#

你可以非常接近:

order by (case when col >= '1' and col < '9999999' then 1 else 2 end),
         col

这样做的好处是可以处理几乎所有的数据库。但是,有些特定于数据库的解决方案可能更简单。
编辑:
如果要对以数字开头的数字进行数字排序,则可以使用:

order by (case when col >= '1' and col < '9999999' then 1 else 2 end),
         (case when col >= '1' and col < '9999999' then len(col) end),
         col

请注意,有些数据库使用 length() 而不是 len() .

tyky79it

tyky79it2#

按顺序从点中选择名称(名称>='0'和名称<'999999'时的大小写,然后是1或2结束),cast(名称为int),(名称>='1'和名称<'9999999'时的大小写,然后是长度(名称)结束)desc,名称asc

相关问题