【问题标题】:Own sort algorithm in SQL ServerSQL Server 中自己的排序算法
【发布时间】:2012-09-06 12:27:50
【问题描述】:

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

【问题讨论】:

  • 你可以用零将单个值填充到固定长度,例如0001.0001.0002?
  • 如果每个级别的长度相同,则以正确的顺序排列文本。
  • 是的,这是一个很好的解决方案。请作为答案。

标签: sql-server sorting


【解决方案1】:

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

0001.0001
0001.0001.0001
0001.0001.0002
0001.0002

【讨论】:

    【解决方案2】:

    试试这个

    order by
        parsename(col,4)*1,
        parsename(col,3)*1,
        parsename(col,2)*1,
        parsename(col,1)*1
    

    【讨论】:

    • parsname 函数用于小字符串,但我可以有非常“深”的字符串 - 事先不知道层次结构有多“深”。
    猜你喜欢
    • 2011-12-10
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    相关资源
    最近更新 更多