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) のメンバーはすべて、スレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。
.gif)
.gif)
.gif)
.gif)