Office中国论坛/Access中国论坛

标题: 数字形式的文本字段排序 [打印本页]

作者: shindo8888    时间: 2013-3-20 11:28
标题: 数字形式的文本字段排序
大家好,我有一个文本字段,里面的数据是字母加数字格式的如 STCS-130012-1,STCS-130012-2,STCS-130012-3......按正常排序时 显示顺序 STCS-130012-1,STCS-130012-11,STCS-130012-12...2,21,22...  请教大家有没有好方法按STCS-130012-1,STCS-130012-2,STCS-130012-3,STCS-130012-4....顺序来排序
作者: 网络蜘蛛    时间: 2013-3-20 11:53
改成
STCS-130012-001
STCS-130012-002
作者: todaynew    时间: 2013-3-20 13:31
select * from 阁下的表名称 order by val(mid(阁下的字段名称,InstrRev(阁下的字段名称,"-")+1))
作者: shindo8888    时间: 2013-3-20 14:26
谢谢楼上的解答和帮助,依据现有的数据采用了val(mid(阁下的字段名称,InstrRev(阁下的字段名称,"-")+1))。但该字段数据有很多采用字母加数字的,不很规律。如CK531234-1......   DFZ243212-1.......会把所有的按尾数取值排序,从长远看还是要按网络蜘蛛所说的规范数据才行。
作者: todaynew    时间: 2013-3-20 16:39
shindo8888 发表于 2013-3-20 14:26
谢谢楼上的解答和帮助,依据现有的数据采用了val(mid(阁下的字段名称,InstrRev(阁下的字段名称,"-")+1))。但 ...

一回事,用截取两个变量排序即可:
order by left(阁下的字段名称,InstrRev(阁下的字段名称,"-")),val(mid(阁下的字段名称,InstrRev(阁下的字段名称,"-")+1))

还可以先截取再拼接排序:
order by left(阁下的字段名称,InstrRev(阁下的字段名称,"-")) & foramt(mid(阁下的字段名称,InstrRev(阁下的字段名称,"-")+1),"0000")

如果不打算修改字段内容,有很多办法来解决这个问题。
作者: shindo8888    时间: 2013-3-21 09:03
哇,真厉害喔,非常谢谢todaynew喔.想法很不错呢




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3