Access中使用特殊字符的SQL字母数字排序
我想在Access中创建一个排序,以便以下示例数据集按以下方式排序 数据集(正确顺序): 以下是Access对数据进行排序的方式:Access中使用特殊字符的SQL字母数字排序,sql,sorting,ms-access,Sql,Sorting,Ms Access,我想在Access中创建一个排序,以便以下示例数据集按以下方式排序 数据集(正确顺序): 以下是Access对数据进行排序的方式: +---------+ | ID | +---------+ | 1/1 | | 100/2 | | 2 | | 2/1 | | 2/2 | | 2/GEN | | 3 | | 5/1BR | | 501/2 | | 99/1 | | 999/3/2 | +---------+ 基本上
+---------+
| ID |
+---------+
| 1/1 |
| 100/2 |
| 2 |
| 2/1 |
| 2/2 |
| 2/GEN |
| 3 |
| 5/1BR |
| 501/2 |
| 99/1 |
| 999/3/2 |
+---------+
基本上,每个斜杠都是父文件的子文件(在999/3/2的示例中,也可能是子文件的子文件)。对于父文件(例如,2是2/1的父文件),排序应按数字顺序进行,然后对于子文件,排序应按字母顺序(GEN的优先级高于2/1)后跟数字顺序
任何帮助都将不胜感激 你可以试试老把戏:
Select * From YourTable
Order By Val([ID]), [ID]
MS Access的字符串操作非常糟糕,不支持JSON或XML,也不支持CTE。我认为您需要编写自己的函数来实现这一点。这当然可以,除了那些嵌套更深的文件(示例中的最后一行),您可以使用split()和@Gustav Val answer来处理嵌套?根据级别的数量,您可能需要一个函数。@Minty用于拆分,如果没有VBA解决方案,您会遇到麻烦。我写了一个答案来说明这个事实。你可以深入到3个层次,然后你真的需要VBA或者得到可怕的SQL字符串。@Erik-很好,我并不反对。我只是觉得如果嵌套受到限制,这可能是一个简单的解决方案。
Select * From YourTable
Order By Val([ID]), [ID]