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 排序。

我尝试更改表格以保存数字类型,并使用多种格式#\###来允许使用“-”字符。根据我对格式化数字的了解,# 存储一个数字,\ 将下一个字符显示为字面意思。

我是完全偏离了解决这个问题的轨道还是我错过了一些小东西?

4

1 回答 1

2

您可以按每一半排序,例如:

SELECT * FROM Table
ORDER BY Val(Left(ID,Instr(Id,"-"))), Val(Mid(ID,Instr(Id,"-")+1))
于 2012-07-17T09:05:19.180 回答