注册 登录
编程论坛 SQL Server论坛

[求助]排序问题

非凡DZ 发布于 2007-06-06 15:35, 719 次点击
我想实现车牌号的排序,分三段排序,我下面的代码只能实现前三位和后三位的排序,中间字符串的转换我的帮助有问题不能看,请大家帮忙看一下,该怎样写代码,谢谢了

代码如下:
insert into 车牌号 values('102-119-206')
insert into 车牌号 values('562-254-364')
insert into 车牌号 values('321-208-775')
insert into 车牌号 values('605-111-105')
insert into 车牌号 values('111-301-222')
insert into 车牌号 values('102-666-206')
insert into 车牌号 values('102-119-100')
insert into 车牌号 values('681-259-146')
insert into 车牌号 values('251-365-759')

select a as 车牌号 from 车牌号 order by
convert(int,left(a,charindex('-',a)-1)),
convert(int,right(a,charindex('-',a)-1))
7 回复
#2
slash19842007-06-06 15:52

如果车牌号如你列出的那样比较规矩的话!
可以这样写:
select a as 车牌号 from 车牌号
order by convert(int,left(a,3)),
convert(int,substring(a,4,3)),
convert(int,right(a,3))

#3
songyang2012007-06-06 15:59

单纯排序的话,似乎加一个order by 车牌号 就可以了嘛

不知道按什么顺序排法……

[此贴子已经被作者于2007-6-6 16:01:12编辑过]

#4
非凡DZ2007-06-06 16:02
二楼的方法我看了一下,还是没有解决我的问题,中间数字是从大到小的,我想要三段都是从小到大的
#5
songyang2012007-06-06 16:06
order by 车牌号
#6
liuzhe2007-06-07 10:24

用order by 車牌號

#7
sky_yang_sky2007-06-09 16:46
select a from num
order by convert(int,left(a,3)),
convert(int,substring(a,4,3)) desc,
convert(int,right(a,3))
你全部要全小到大只要在其后加個DESC就行,不知道你是不是要這種效果
#8
sky_yang_sky2007-06-09 16:48

select a as 车牌号 from 车牌号
order by convert(int,left(a,3)),
convert(int,substring(a,4,3)) desc,
convert(int,right(a,3))
上面我是用一個別的數據測的,你的原始代碼可以如這個這樣寫就行了

1