6

階層ID値を、辞書式順序が自然な深さ優先の順序を維持する文字列に変換する、合理的でパフォーマンスの高い方法があるかどうか疑問に思います。

ありがとう!

4

1 に答える 1

7

以下のコード (AdventureWorks2008 で実行) に従って、スタイル 1 を使用して、varbinary に変換してから nvarchar に変換できます。スタイル 1 がないと、正しく順序付けされません。

select convert(nvarchar(20),convert(varbinary(20),OrganizationNode,1),1)
        as OrderableString,
       OrganizationNode.ToString() as ReadableString,
       convert(nvarchar(20),OrganizationNode) as ReadableString2
from humanresources.employee
order by strNode;

これからの順序の一部は次のとおりです。

OrderableString     ReadableString  ReadableString2
0x7AD744    /3/1/1/8/   /3/1/1/8/
0x7AD74C    /3/1/1/9/   /3/1/1/9/
0x7AD754    /3/1/1/10/  /3/1/1/10/
0x7AD75C    /3/1/1/11/  /3/1/1/11/
0x7AD764    /3/1/1/12/  /3/1/1/12/
0x7ADA      /3/1/2/     /3/1/2/
0x7ADAB0    /3/1/2/1/   /3/1/2/1/
0x7ADAD0    /3/1/2/2/   /3/1/2/2/
于 2012-08-27T03:17:48.463 に答える