繁体   English   中英

SQL Server中的order by子句混乱

[英]Confusion in order by clause in SQL server

我想使用order by clause以“ 1,2,3,4 ..”之类的排序顺序返回表的“ id”列值,但是以下查询返回id的顺序为“ 1、10、100” ,101,102 ...'

select id from loginuser order by id;

我可以知道能否得到理想的输出吗?

您的id列的类型为varchar,请尝试按order by子句强制转换为int以获取所需的结果。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM