导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

ORDER BY 无法有效排序

ud_miser 2008-01-20 01:34:54
最日很郁闷 数据库有一列HireAmount INT类型
我用SELECT * FROM TABLE ORDER BY HireAmount 对表TABLE进行排序 可是出现的情况是有几行的乱的,比如说:
HireAmount
10
32
5
7
8
9

请问这是怎么回事?
...全文
59 点赞 收藏 9
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
areswang 2008-01-20
按长度,先排完一位的,才去排两位。
回复
areswang 2008-01-20
1你本来的数据类型不是int,而是 varchar型的
转换成int后就可以了。
2不转换的话,就按 order by len(HireAmount),HireAmount
也可以
回复
ud_miser 2008-01-20
哦 原来数据表那列是VARCHAR


请问select * from @tab order by len(HireAmount),HireAmount 是什么意思?
回复
点点星灯 2008-01-20
因为字符的排序 和数字的排序上不同的,

上面的代码应该已经显示了不同的效果.
回复
ud_miser 2008-01-20
恩 这次对了 能告诉我原因么
回复
点点星灯 2008-01-20
declare @tab table(HireAmount int)

insert @tab values(10)
insert @tab values(32)
insert @tab values(5)
insert @tab values(7)
insert @tab values(8)
insert @tab values(9)

--select * from @tab
select * from @tab order by HireAmount

--说明HireAmount字段是字符型的
select * from @tab order by convert(varchar(10),HireAmount)

--你应该这样
select * from @tab order by convert(int,HireAmount)
回复
areswang 2008-01-20
select * from @tab order by len(HireAmount),HireAmount
回复
ud_miser 2008-01-20
按照LS的修改 问题依旧 别的列都好好的
回复
点点星灯 2008-01-20
declare @tab table(HireAmount int)

insert @tab values(10)
insert @tab values(32)
insert @tab values(5)
insert @tab values(7)
insert @tab values(8)
insert @tab values(9)

select * from @tab
select * from @tab order by HireAmount

--说明HireAmount字段是字符型的
select * from @tab order by convert(varchar(10),HireAmount)
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告