也许这是一个非常幼稚的问题。 我能以这样的方式订购记录,即以数字开头的值到达记录的末尾吗? 例如,这些是数据库中的值:
1
Bill
Andrew
通过查询转到此处:
Andrew
Bill
1
答案 0 :(得分:3)
ORDER BY -ISNUMERIC(a), a
答案 1 :(得分:0)
不,只有当您选择DESC排序时,数字才会结束 - 当字母变为“z..a”时。您可能应该执行两个查询 - 通过字母和数字 - 以及联合结果。
答案 2 :(得分:0)
解决方案可以在order by子句中使用两列 - 第一列不对应于真正的DB列,但基于某些计算:
像这样的东西(主要是伪代码)可能会有所帮助:
select *
from your_table
where ...
order by case when your_column >= '0' and your_column <= '9' then 2 else 1 end,
your_column
订单的第一部分将确保数字放在非数字之后;第二部分只是做一个正常的排序。
注意:我认为可以修改条件以使用确定your_column
是否包含字符串或数字的函数;也许你的数据库系统提供了某种is_number
函数?