| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 785 人关注过本帖
标题:请教SQL中排序的一个小问题
只看楼主 加入收藏
小糊涂仙
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2007-8-5
收藏
 问题点数:0 回复次数:6 
请教SQL中排序的一个小问题
我有一列字符型数据 编号: 11-1,11-3,111-2,111-5,12-1,14-12,14-123,10-1,10-12
我要依据这列数据进行排序,要求先按'-'前的数字升序排,再按'-'后的数字排.

select *from table1
order by left(编号,charindex('-',编号)-1),stuff(编号,1,charindex('-',编号),'')

请问这样排序为什么不行?
为什么必须要把 left(编号,charindex('-',编号)-1),stuff(编号,1,charindex('-',编号),'') 用convert函数转化为int型呢?
搜索更多相关主题的帖子: SQL 
2007-08-07 17:10
西风独自凉
Rank: 8Rank: 8
等 级:贵宾
威 望:43
帖 子:3380
专家分:28
注 册:2007-8-2
收藏
得分:0 
convert函数转化为int型
你不转化为int

直接order by 编号也会出现一样的结果(和你转化为int的一样)

你先把编号左边的数字截下来作为一个表..然后根据编号两表中间连接
得出结果...然后order by 这个截取来的值就应该可以了啊

根据后面数字排序也一样

2007-08-07 19:08
小糊涂仙
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2007-8-5
收藏
得分:0 
我知道如果把截取出来的编号最为一列的话,按照列名也可以实现排序.呵呵,按照楼上的说法似乎有点复杂了,还不如转化了呢~
我想知道的是为什么截取出的字符串不另编为一列就不能作为排序依据呢

谁能改变,人生的长度 我们都在不断赶路,忘记了出路 去不到终点,回到原点 享受,那走不完的路
2007-08-07 19:25
西风独自凉
Rank: 8Rank: 8
等 级:贵宾
威 望:43
帖 子:3380
专家分:28
注 册:2007-8-2
收藏
得分:0 

order by应该只针对table中的字段吧

2007-08-07 19:32
小糊涂仙
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2007-8-5
收藏
得分:0 

我明白了 谢谢楼上

谁能改变,人生的长度 我们都在不断赶路,忘记了出路 去不到终点,回到原点 享受,那走不完的路
2007-08-07 21:08
sky_yang_sky
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:481
专家分:16
注 册:2007-5-30
收藏
得分:0 
select * from table1 order by left(编号, charindex('-',编号)-1),right(编号,(len(编号)-charindex('-',编号)))
像這樣就可以按你的要求排了,我記得前面有像這樣的例子,樓主為什麼不去查一下

你微笑的面對整個世界,整個世界也將會微笑的面對你。
2007-08-08 08:20
lzalibabalr
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2007-7-31
收藏
得分:0 

left(编号,charindex('-',编号)-1),stuff(编号,1,charindex('-',编号),'')

这样得出来的是字符串,并不是数字,如果按字符串排序的话,要根据这个字符列的排序规则,所以可能得不到你要的结果.
因此用CONVERT转换成数字型并按asc排序.

stuff(编号,1,charindex('-',编号),'') 得出的结果应该是''数字的字符串,就是说数字前面有''这个字符,因此用
CONVERT转换成数字,可以去掉前面的''这个字符,这样才能用数字的asc进行排序

2007-08-08 09:40
快速回复:请教SQL中排序的一个小问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.037633 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved