IsDescendantOf(数据库引擎)
适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例
如果这是父级的后代,则返回 true。
语法
-- Transact-SQL syntax
child. IsDescendantOf ( parent )
-- CLR syntax
SqlHierarchyId IsDescendantOf (SqlHierarchyId parent )
注意
若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档。
参数
parent
要执行 IsDescendantOf 测试的 Hierarchyid 节点。
返回类型
SQL Server 返回类型:bit
CLR 返回类型:SqlBoolean
注解
对于以父级为根的子树中的所有节点,返回 true;对于其他所有节点,返回 false。
父级被视为其本身的后代。
示例
A. 在 WHERE 子句中使用 IsDescendantOf
下面的示例返回某个经理以及向该经理报告的雇员:
DECLARE @Manager hierarchyid
SELECT @Manager = OrgNode FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\dylan0'
SELECT * FROM HumanResources.EmployeeDemo
WHERE OrgNode.IsDescendantOf(@Manager) = 1
B. 使用 IsDescendantOf 计算关系
下面的代码声明并填充三个变量。 然后它计算层次结构关系,基于比较返回两个显示结果之一:
DECLARE @Manager hierarchyid, @Employee hierarchyid, @LoginID nvarchar(256)
SELECT @Manager = OrgNode FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\terri0' ;
SELECT @Employee = OrgNode, @LoginID = LoginID FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\rob0'
IF @Employee.IsDescendantOf(@Manager) = 1
BEGIN
PRINT 'LoginID ' + @LoginID + ' is a subordinate of the selected Manager.'
END
ELSE
BEGIN
PRINT 'LoginID ' + @LoginID + ' is not a subordinate of the selected Manager.' ;
END
C. 调用公共语言运行时方法
下面的代码段调用 IsDescendantOf()
方法。
this.IsDescendantOf(Parent)
另请参阅
hierarchyid 数据类型方法引用
层次结构数据 (SQL Server)
hierarchyid (Transact-SQL)
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈