GetAncestor(数据库引擎)
适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例
返回表示 this 的第 n 个祖先的 hierarchyid。
语法
-- Transact-SQL syntax
child.GetAncestor ( n )
-- CLR syntax
SqlHierarchyId GetAncestor ( int n )
注意
若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档。
自变量
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)
返回层次结构中从当前节点下降两个级别的员工。 这些员工节点是当前节点的孙级。 下面的示例使用 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 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈