[英]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.