次の方法で共有


SqlHierarchyId 構造体

SqlHierarchyId 型は、深さと幅を指定することで、階層構造内の位置を表します。

名前空間:  Microsoft.SqlServer.Types
アセンブリ:  Microsoft.SqlServer.Types (Microsoft.SqlServer.Types.dll)

構文

'宣言
<CLSCompliantAttribute(True)> _
<SqlUserDefinedTypeAttribute(Format.UserDefined, IsByteOrdered := True,  _
    MaxByteSize := , Name := "SqlHierarchyId")> _
Public Structure SqlHierarchyId _
    Implements IBinarySerialize, INullable, IComparable
'使用
Dim instance As SqlHierarchyId
[CLSCompliantAttribute(true)]
[SqlUserDefinedTypeAttribute(Format.UserDefined, IsByteOrdered = true, 
    MaxByteSize = , Name = "SqlHierarchyId")]
public struct SqlHierarchyId : IBinarySerialize, 
    INullable, IComparable
[CLSCompliantAttribute(true)]
[SqlUserDefinedTypeAttribute(Format::UserDefined, IsByteOrdered = true, 
    MaxByteSize = , Name = L"SqlHierarchyId")]
public value class SqlHierarchyId : IBinarySerialize, 
    INullable, IComparable
[<SealedAttribute>]
[<CLSCompliantAttribute(true)>]
[<SqlUserDefinedTypeAttribute(Format.UserDefined, IsByteOrdered = true, 
    MaxByteSize = , Name = "SqlHierarchyId")>]
type SqlHierarchyId =  
    struct 
        interface IBinarySerialize 
        interface INullable 
        interface IComparable 
    end
JScript は構造体の使用をサポートしていますが、新規の宣言はサポートしていません。

SqlHierarchyId 型は、以下のメンバーを公開しています。

プロパティ

  名前 説明
パブリック プロパティ IsNull SqlHierarchyId が nullNULL 参照 (Visual Basic では Nothing) かどうかを示す値を取得します。
パブリック プロパティ静的メンバー Null nullNULL 参照 (Visual Basic では Nothing) の階層 ID を持つ SqlHierarchyId を取得します。

先頭に戻る

メソッド

  名前 説明
パブリック メソッド CompareTo(Object) SqlHierarchyId とオブジェクトとの間の比較の結果を示す値を返します。
パブリック メソッド CompareTo(SqlHierarchyId) 2 つの SqlHierarchyId ノード間の比較の結果を示す値を返します。
パブリック メソッド Equals SqlHierarchyId と obj が等しいかどうかを評価します。 (ValueType.Equals(Object) をオーバーライドします。)
パブリック メソッド GetAncestor 階層ツリー内で n レベル上位にある SqlHierarchyId ノードを取得します。
パブリック メソッド GetDescendant child1 より大きくて child2 より小さい、子孫 SqlHierarchyId ノードの値を取得します。
パブリック メソッド GetHashCode 階層ツリーのルート ノードから SqlHierarchyId ノードまでのパスのハッシュを取得します。 (ValueType.GetHashCode() をオーバーライドします。)
パブリック メソッド GetLevel 階層ツリー内の SqlHierarchyId ノードのレベルを示す値を取得します。
パブリック メソッド GetReparentedValue newRoot からのパスが oldRoot から this へのパスと等しい、新しい SqlHierarchyId ノードの位置を表す値を取得します。このノードは実質的に、this を新しい位置に移動します。
パブリック メソッド静的メンバー GetRoot 階層のルート SqlHierarchyId ノードを表す値を取得します。
パブリック メソッド GetType (Object から継承されています。)
パブリック メソッド IsDescendantOf SqlHierarchyId ノードが親の子孫であるかどうかを示す値を取得します。
パブリック メソッド静的メンバー Parse SqlHierarchyId ノードの正規の文字列表記を SqlHierarchyId 値に変換します。
パブリック メソッド Read 指定したバイナリ リーダーから SqlHierarchyId に読み取ります。
パブリック メソッド ToString SqlHierarchyId ノードの正規の文字列表記を SqlHierarchyId 値から取得します。 (ValueType.ToString() をオーバーライドします。)
パブリック メソッド Write SqlHierarchyId を指定したバイナリ ライターに書き込みます。

先頭に戻る

演算子

  名前 説明
パブリック演算子静的メンバー Equality 2 つの SqlHierarchyId ノードが等しいかどうかを評価します。
パブリック演算子静的メンバー GreaterThan 指定した一方の SqlHierarchyId ノードがもう一方のノードより大きいかどうかを評価します。
パブリック演算子静的メンバー GreaterThanOrEqual 指定した一方の SqlHierarchyId ノードがもう一方のノードより大きいか、それと等しいかどうかを評価します。
パブリック演算子静的メンバー Inequality 2 つの SqlHierarchyId ノードが等しくないかどうかを評価します。
パブリック演算子静的メンバー LessThan 指定した一方の SqlHierarchyId ノードがもう一方のノードより小さいかどうかを評価します。
パブリック演算子静的メンバー LessThanOrEqual 指定した一方の SqlHierarchyId ノードがもう一方のノードより小さいか、それと等しいかどうかを評価します。

先頭に戻る

説明

この型は、階層情報を保存する際に以下のメリットをもたらします。

  • データ ストレージが非常にコンパクトになります。

  • 深さ優先の比較を実行できます。 この型のインデックスは深さ優先順であり、深さ優先検査で近接するノードどうしは、相互に近接して格納されます。

  • 任意の挿入および削除をサポートしています。

  • この型の制約事項は、単一インスタンスの階層データ型を 892 バイト以下にする必要があることです。 この制限に収まりきらない数のレベルを処理する階層では、別のデータ型を使用する必要があります。

HierarchyId 型は、SqlHierarchyId データ型として CLR クライアントで使用できます。

使用例

DECLARE @employee hierarchyid
SELECT @employee = OrgNode FROM HumanResources.EmployeeDemo
  WHERE LoginID = 'adventure-works\dylan0'

SELECT * FROM HumanResources.EmployeeDemo
WHERE @employee.IsDescendantOf(OrgNode) = 1

スレッド セーフ

この型の public static (Visual Basic では Shared) のメンバーはすべて、スレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

関連項目

参照

Microsoft.SqlServer.Types 名前空間