728x90
반응형
SQL Server의 `IsDescendantOf` 함수는 계층적인 데이터를 다룰 때 사용되는 함수 중 하나입니다. 이 함수는 두 개의 계층적인 값 사이의 부모-자식 관계를 확인합니다. 보통 이 함수는 `HierarchyID` 데이터 형식과 함께 사용됩니다.
`IsDescendantOf` 함수의 사용법은 다음과 같습니다:
IsDescendantOf ( parent_hierarchyid :: hierarchyid , child_hierarchyid :: hierarchyid )
여기서:
- `parent_hierarchyid`는 부모 노드를 나타내는 `HierarchyID` 값입니다.
- `child_hierarchyid`는 자식 노드를 나타내는 `HierarchyID` 값입니다.
이 함수는 두 `HierarchyID` 값 사이의 부모-자식 관계를 확인하고, 자식이 부모의 하위 노드인 경우 1을 반환하고, 그렇지 않으면 0을 반환합니다.
예를 들어, 다음과 같은 테이블이 있다고 가정해봅시다:
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
EmployeeName NVARCHAR(100),
EmployeeHierarchy HIERARCHYID
);
여기서 `EmployeeHierarchy`는 계층적 데이터를 나타내는 `HierarchyID` 값입니다. 이제 몇 가지 예시를 통해 `IsDescendantOf` 함수를 설명해보겠습니다:
1. 부모-자식 관계 확인:
DECLARE @parentHierarchy HIERARCHYID;
DECLARE @childHierarchy HIERARCHYID;
-- 부모와 자식 노드 설정
SELECT @parentHierarchy = EmployeeHierarchy
FROM Employees
WHERE EmployeeID = 1; -- 부모 노드
SELECT @childHierarchy = EmployeeHierarchy
FROM Employees
WHERE EmployeeID = 2; -- 자식 노드
-- IsDescendantOf 함수 사용
IF (IsDescendantOf(@parentHierarchy, @childHierarchy) = 1)
PRINT '자식은 부모의 하위 노드입니다.';
ELSE
PRINT '자식은 부모의 하위 노드가 아닙니다.';
이 경우 자식 노드가 부모 노드의 하위 노드이므로 "자식은 부모의 하위 노드입니다."가 출력됩니다.
2. 부모-자식 관계가 아닌 경우 확인:
DECLARE @parentHierarchy HIERARCHYID;
DECLARE @childHierarchy HIERARCHYID;
-- 부모와 자식 노드 설정
SELECT @parentHierarchy = EmployeeHierarchy
FROM Employees
WHERE EmployeeID = 1; -- 부모 노드
SELECT @childHierarchy = EmployeeHierarchy
FROM Employees
WHERE EmployeeID = 3; -- 다른 부모 노드의 자식 노드
-- IsDescendantOf 함수 사용
IF (IsDescendantOf(@parentHierarchy, @childHierarchy) = 1)
PRINT '자식은 부모의 하위 노드입니다.';
ELSE
PRINT '자식은 부모의 하위 노드가 아닙니다.';
이 경우 자식 노드가 다른 부모 노드의 하위 노드가 아니므로 "자식은 부모의 하위 노드가 아닙니다."가 출력됩니다.
728x90
반응형
'SQL > MSSQL' 카테고리의 다른 글
[MSSQL] GetReparentedValue 사용 방법 및 예시 (0) | 2024.04.23 |
---|---|
[MSSQL] GetRoot 사용 방법 및 예시 (0) | 2024.04.22 |
[MSSQL] GetLevel 사용 방법 및 예시 (0) | 2024.04.22 |
[MSSQL] GetDescendant 사용 방법 및 예시 (0) | 2024.04.09 |
[MSSQL] GetAncestor 사용 방법 및 예시 (0) | 2024.04.09 |
[MSSQL] hierarchyid 메서드 사용 방법 및 예시 (0) | 2024.04.09 |
[MSSQL] smalldatetime 사용 방법 및 예시 (0) | 2024.04.09 |
[MSSQL] datetimeoffset 사용 방법 및 예시 (0) | 2024.04.09 |