2

階層関係を格納するテーブルがあります。それらは 1.1、1.1.1、1.1.2、1.2 のような文字列として格納されます。したがって、それらを階層順に並べ替える必要がある場合は、独自の並べ替え関数を呼び出す必要があります。Aren' t I?しかし、独自の有効なアルゴリズム (n*ln(n)) を記述するのは長すぎると思います。2 つの値を比較するだけの小さな関数を使用し、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 に答える