SQL Server中的by子句中的混淆

时间:2011-03-07 09:27:52

标签: sql sql-server sorting

我想使用order by clause按照排序顺序返回我的表的'id'列值,例如'1,2,3,4 ..'但是以下查询返回id的顺序' 1,10,100,101,102 ......'

select id from loginuser order by id;

我可以知道我可以获得理想的输出吗?

3 个答案:

答案 0 :(得分:7)

您的id列的类型为varchar,请尝试在order by子句中转换为int以获得所需的结果。

答案 1 :(得分:2)

如果可能,您应该更改数据库中的列类型。

答案 2 :(得分:0)

添加到@ Greco的答案,最好将排序顺序公开给调用者。无论如何,使用ORDER BY子句中的表达式违反了SQL标准。因此,请考虑以下替代方案:

SELECT id, CAST(id AS INTEGER) AS sort_col  
  FROM loginuser 
 ORDER 
    BY sort_col;