Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL server中order by子句的混淆_Sql_Sql Server_Sorting - Fatal编程技术网

SQL server中order by子句的混淆

SQL server中order by子句的混淆,sql,sql-server,sorting,Sql,Sql Server,Sorting,我想使用ORDERBY子句以排序顺序返回表的'id'列值,如'1,2,3,4..',但下面的查询返回的id值的顺序为'1,10,100,101,102..' select id from loginuser order by id; 我可以知道我可以得到我想要的输出吗?您的id列是varchar类型,请尝试在order by子句中强制转换为int以获得所需的结果。如果可能,您应该更改数据库中的列类型。添加到@Greco的答案中,向调用者公开排序顺序是一个很好的做法。无论如何,在ORDERBY子

我想使用ORDERBY子句以排序顺序返回表的'id'列值,如'1,2,3,4..',但下面的查询返回的id值的顺序为'1,10,100,101,102..'

select id from loginuser order by id;

我可以知道我可以得到我想要的输出吗?

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

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

添加到@Greco的答案中,向调用者公开排序顺序是一个很好的做法。无论如何,在ORDERBY子句中使用表达式违反了SQL标准。因此,考虑这个替代方案:

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

按CASTid从loginuser ORDER中选择id作为整数ASC@marc_s:通常,当在同一查询中引入列别名时,您不能引用该列别名。。。。你真的测试过这个吗?我甚至怀疑它会运行….-你完全搞错了。SQL-92规范规定,您只能在ORDER BY子句中引用别名或as子句。你有怀疑吗?那你为什么不测试一下呢;