Share via


IsDescendantOf(데이터베이스 엔진)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

this가 부모의 하위 항목인 경우 true를 반환합니다.

Syntax

-- 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)