既有字符又有数字组成的列如何排序?

gaojupeng 2007-12-19 02:10:45
比如:
按DESC排序就成这样的了:
[2007]RED-w150-112
[2007]RED-w150-1110
[2007]RED-w150-111
[2007]RED-w150-1109
我要的应该是这样的
[2007]RED-w150-111
[2007]RED-w150-112
[2007]RED-w150-1109
[2007]RED-w150-1110

谢谢了
...全文
197 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
meiZiNick 2008-05-01
  • 打赏
  • 举报
回复
支持搂主,收藏
knowledge_Is_Life 2008-05-01
  • 打赏
  • 举报
回复
支持搂主,收藏
yuko520 2008-04-28
  • 打赏
  • 举报
回复
找了好久,终于找到了一个类似的排序问题贴,但这种处理方式又不合适.
我现有的问题描述如下:
原输入顺序是(字段类型是:字符型):
1
2
3
..
1-1
1-2
1-3
1-4
..
1-10
1-11
..
2-1-1
2-1-2
..
2-2-1
2-2-2
2-2-3

在数据窗口显示后,排序就会变化:
1
1-1
1-10
1-11
..
1-2
1-3
..
2
2-1-1
2-2-1
2-2-2
..
2-1-2
..
3
对于这种结构应该如果处理,谢谢.
开发平台PB6.5+XP


wangxuelid 2007-12-19
  • 打赏
  • 举报
回复

select * from table order by convert(int,reverse(substring(reverse(col),1,charindex('-',reverse(col))-1 ) ))
[2007]RED-w150-111
[2007]RED-w150-112
[2007]RED-w150-1109
[2007]RED-w150-1110
dawugui 2007-12-19
  • 打赏
  • 举报
回复
--以下为在sql server 中的写法.
create table tb(col varchar(30))
insert into tb values('[2007]RED-w150-112')
insert into tb values('[2007]RED-w150-1110')
insert into tb values('[2007]RED-w150-111')
insert into tb values('[2007]RED-w150-1109')
go

select * from tb order by cast(reverse(left(reverse(col) , charindex('-',reverse(col))-1)) as int)
/*
col
------------------------------
[2007]RED-w150-111
[2007]RED-w150-112
[2007]RED-w150-1109
[2007]RED-w150-1110
(4 行受影响)
*/
select * from tb order by cast(reverse(left(reverse(col) , charindex('-',reverse(col))-1)) as int) desc
/*
col
------------------------------
[2007]RED-w150-1110
[2007]RED-w150-1109
[2007]RED-w150-112
[2007]RED-w150-111

(4 行受影响)
*/

drop table tb

xyqiqi 2007-12-19
  • 打赏
  • 举报
回复
那你就把最后几个数据字取出来,按大小排序

1,075

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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