2012-07-17 86 views
1

我正在帮助某人整理数据库。它以表格A-BBB中的文本类型的ID索引,其中A和B是数字0-9。这种形式是我们的应用程序所需要的,唯一的缺点是它按照ASCII标准排序,所以编号为1,10,2等。显然,我们希望它按A排序,然后按BBB排序。所以ID 1-001,10-010,1-010和10-001将被分类为1-001,1-010,10-001和10-010。将文本转换为格式化的数字类型

我试图改变表来保存数字类型,并使用#\###格式的数字来允许' - '字符。根据我对格式化数字的理解,#存储一个数字,\将下一个字符显示为字面外观。

我在解决这个问题上完全偏离轨道,还是有一些我错过了?

回答

2

您可以通过每半年进行排序,例如:

SELECT * FROM Table 
ORDER BY Val(Left(ID,Instr(Id,"-"))), Val(Mid(ID,Instr(Id,"-")+1)) 
+1

+1这是我会抽appeoach,我的顺序按行看起来是这样,但:“ORDER BY CDbl(MID([ID] ,1,InStr([ID],“ - ”) - 1)),CDbl(Right([ID],Len([ID]) - InStr([ID],“ - ”)))“ – 2012-07-18 14:39:16

相关问题