SQL排序字符串和数字

时间:2012-05-01 20:02:52

标签: sql

如果我有一个1,2,3,4,5,K列表,我希望它像K,1,2,3,4,5那样订购,我该如何在SQL中执行此操作?这些值是SQL表中唯一的值。这是在MySQL,但也欢迎其他数据库。

4 个答案:

答案 0 :(得分:5)

mysql中没有整数dection函数,所以你必须做这样的事情。假设你的列是varchar之类的,你就可以像这样简单了

ORDER BY CASE WHEN field REGEXP '^-?[0-9]+$' THEN field ELSE '0'+field END

答案 1 :(得分:1)

在Oracle中,您可以这样做:

ORDER BY CASE WHEN column='K' THEN 0 ELSE TO_NUMBER(column) END

其他系统可能具有类似的结构。

答案 2 :(得分:1)

如果需要对SELECT的结果进行排序,那么您可以在ORDER BY语句中声明自定义排序规则。

以下是一个示例:http://www.emadibrahim.com/2007/05/25/custom-sort-order-in-a-sql-statement/

我们的想法是为每个项目分配您自己的优先级。

请记住,它可能依赖于实际的SQL服务器。

答案 3 :(得分:0)

这是一个适用于SQLite的方法:

 select v1.* from (
   select t3.*, (case when value = 'K' then '0' else value end) normalized_val 
   from t3) v1 
 order by v1.normalized_val;