문제
다음 SQL의 실행 결과는? (Oracle)
SQLWITH T AS ( SELECT 'ABC' AS COL1, 3 AS COL2 FROM DUAL UNION ALL SELECT NULL, -2 FROM DUAL ) SELECT COALESCE(COL1, 'DEF', 'GHI'), SIGN(COL2) * POWER(ABS(COL2), 2) FROM T ORDER BY COL2;
① NULL, 4 다음 ABC, 9 ② DEF, 4 다음 ABC, 9 ③ DEF, -4 다음 ABC, 9 ④ GHI, 4 다음 ABC, 9
정답
3번
해설
ORDER BY COL2로 -2가 먼저 출력됩니다. 첫 번째 행: COL1=NULL일 때 COALESCE(NULL, 'DEF', 'GHI')='DEF'가 되고, SIGN(-2)*POWER(ABS(-2),2)=(-1)*POWER(2,2)=(-1)4=-4가 됩니다. 두 번째 행: COL1='ABC'이고, SIGN(3)POWER(ABS(3),2)=1POWER(3,2)=19=9가 됩니다. 따라서 결과는 'DEF, -4' 다음 'ABC, 9'입니다.