GetAncestor (データベース エンジン)
適用対象: SQL Server
Azure SQL Database
Azure SQL Managed Instance
this の n 番目の先祖を表す hierarchyid が返されます。
構文
-- Transact-SQL syntax
child.GetAncestor ( n )
-- CLR syntax
SqlHierarchyId GetAncestor ( int n )
Note
SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。
引数
n
n、 int, を階層を上がるレベル数を表します。
戻り値の型
SQL Server の戻り値の型: hierarchyid
CLR 戻り値の型:SqlHierarchyId
解説
出力の各ノードにとって、現在のノードが指定したレベルの先祖であるかどうかをテストするときに使用します。
GetLevel() より大きい数値が渡されると、NULL が返されます。
負の数が渡されると、例外が発生します。
例
A. 親の子ノードを検索する
GetAncestor(1)
は、david0
をその直接の先祖 (親) とする従業員を返します。 GetAncestor(1)
の使用例を次に示します。
DECLARE @CurrentEmployee hierarchyid
SELECT @CurrentEmployee = OrgNode FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\david0'
SELECT OrgNode.ToString() AS Text_OrgNode, *
FROM HumanResources.EmployeeDemo
WHERE OrgNode.GetAncestor(1) = @CurrentEmployee ;
B. 親の孫を返す
GetAncestor(2)
は、階層内で現在のノードより 2 つ下のレベルにある従業員を返します。 これらの従業員は現在のノードの孫にあたります。 GetAncestor(2)
の使用例を次に示します。
DECLARE @CurrentEmployee hierarchyid
SELECT @CurrentEmployee = OrgNode FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\ken0'
SELECT OrgNode.ToString() AS Text_OrgNode, *
FROM HumanResources.EmployeeDemo
WHERE OrgNode.GetAncestor(2) = @CurrentEmployee ;
C. 現在の行を返す
GetAncestor(0)
を使用して現在のノードを返すには、次のコードを実行します。
DECLARE @CurrentEmployee hierarchyid
SELECT @CurrentEmployee = OrgNode FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\david0'
SELECT OrgNode.ToString() AS Text_OrgNode, *
FROM HumanResources.EmployeeDemo
WHERE OrgNode.GetAncestor(0) = @CurrentEmployee ;
D. テーブルが存在しない場合に階層レベルを返す
GetAncestor
は、テーブルが存在しない場合でも、階層内の選択したレベルを返します。 たとえば、次のコードでは、現在の従業員を指定し、テーブルを参照せずに現在の従業員の先祖の hierarchyid
を返します。
DECLARE @CurrentEmployee hierarchyid ;
DECLARE @TargetEmployee hierarchyid ;
SELECT @CurrentEmployee = '/2/3/1.2/5/3/' ;
SELECT @TargetEmployee = @CurrentEmployee.GetAncestor(2) ;
SELECT @TargetEmployee.ToString(), @TargetEmployee ;
E. 共通言語ランタイム メソッドを呼び出す
次のコード例では GetAncestor()
メソッドを呼び出します。
this.GetAncestor(1)
参照
IsDescendantOf (データベース エンジン)
hierarchyid データ型メソッド リファレンス
階層データ (SQL Server)
hierarchyid (Transact-SQL)
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示