Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Access中使用特殊字符的SQL字母数字排序_Sql_Sorting_Ms Access - Fatal编程技术网

Access中使用特殊字符的SQL字母数字排序

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 | +---------+ 基本上

我想在Access中创建一个排序,以便以下示例数据集按以下方式排序

数据集(正确顺序):

以下是Access对数据进行排序的方式:

+---------+
|   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]