
예시)

Root출력Leaf노드로 간주Inner로 간주SELECT N, (
CASE
WHEN P IS null THEN 'Root'
WHEN N NOT IN (SELECT DISTINCT P FROM BST) THEN 'Leaf'
ELSE 'Inner'
END
)
FROM BST
ORDER BY 1;
SELECT N, (
CASE
WHEN P IS null THEN 'Root'
WHEN N NOT IN (SELECT DISTINCT P FROM BST WHERE P IS NOT NULL) THEN 'Leaf'
ELSE 'Inner'
END
)
FROM BST
ORDER BY 1;
초기에 푼 문제를 보면
... WHEN N NOT IN (SELECT DISTINCT P FROM BST) THEN 'Leaf' ...위와 같은 형태로 되어있는데 여기서
N을null값과 비교하게 된다는 것이다.
null값은 비교연산 시 결과가unknown이 되는데 이것은 항상ELSE구문으로 넘어가기 때문에 오류가 발생한 것.
null값은 비교연산 시 결과가 unknown이 된다unknown은 ELSE구문으로 넘어간다.