日期:2014-05-17  浏览次数:20464 次

关于ORDER BY排序,请教大家
今天写存储过程,sql的str中写了‘ order by code '。奇怪的是跑出来的结果似是而非。
上图请大家帮忙看看可能是什么原因。


分不算多,请大家帮忙,谢谢~

------解决方案--------------------
ORDER BY CAST(CODE AS INT)试试。
------解决方案--------------------
因为code 的数据类型是 vharchar 的 需要通过 格式转换成int 格式再进行排序 order by CAST(CODE AS INT)
------解决方案--------------------
引用:
ORDER BY CAST(CODE AS INT)试试。

------解决方案--------------------
ORDER BY convert(int,CODE) ASC 测试下吧
------解决方案--------------------
order by code+1 看看报错不?
------解决方案--------------------
引用:
ORDER BY convert(int,CODE) ASC 测试下吧

必须先转换在比较...
------解决方案--------------------
应该是有子查询或者连接
------解决方案--------------------
转化为INT类型之后再去排序
------解决方案--------------------
引用:
我觉得有子查询。不然不会这样的。像下面的。
select * from 
(
select * from
xxx
order by code
) xx


子查询中除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效.

我觉得应该是有其它的列也在排序中,肯定不会只有这一列的.

------解决方案--------------------
你这个应该是动态sql吧?试一下把exec换成print,然后看看最终是执行哪个?order by的顺序是从左到右的,所以看看第一个是什么列,估计你希望排序的那个列是第二列。
------解决方案--------------------
插入临时表的时候没必要order by,因为没有聚集索引,你就算order by后插进去,结果还是无序的,你在SELECT * from #RESULT 的时候再order by试试