IsDescendantOf(数据库引擎)

如果这是父级的后代,则返回 true。

语法

-- Transact-SQL syntax
child. IsDescendantOf ( parent )

-- CLR syntax
SqlHierarchyId IsDescendantOf (SqlHierarchyId parent )

参数

  • 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 (Transact-SQL)

概念

hierarchyid 数据类型方法引用

层次结构数据 (SQL Server)