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

请问这是怎么回事?
...全文
130 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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)

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧