2

我有一个存储层次关系的表。它们存储为像 1.1、1.1.1、1.1.2、1.2 这样的字符串......因此,当我需要按层次顺序对它们进行排序时,我需要调用我自己的排序函数。Aren' t I?但是我认为编写自己的有效算法(n * ln(n))太长了。我想使用仅比较两个值并将其与ORDER BY语句一起使用的小函数。我可以这样做吗?还有另一个实现这一目标的方法?谢谢。

4

2 回答 2

2

用零将每个级别左填充到固定长度将允许直接的文本排序。使用您的样本值:

0001.0001
0001.0001.0001
0001.0001.0002
0001.0002
于 2012-09-06T13:18:27.077 回答
0

试试这个

order by
    parsename(col,4)*1,
    parsename(col,3)*1,
    parsename(col,2)*1,
    parsename(col,1)*1
于 2012-09-06T12:46:52.483 回答