본문 바로가기
SQL 문제 풀기/2. SQLD 기출 : 2024.3.01~2024.4.25

<SQLD 31> nvl 함수에 대한 기출문제

by HYEHYE_SON 2024. 3. 31.
728x90

매일 SQLD 기출 문제 풀기 챌린지


 


문제 31.

다음 주어진 SQL문을 수행하였을 때의 결과가 아래와 같을 때 빈칸에 들어갈 것으로 알맞은 것은?

 

[ SQL ]

SELECT 10+20 * (( ? )(NULL, 0.1, 0.2))
FROM DUAL;

 

[ 결과 ]

14

 

[ 보기 ]

① IS NULL
② NVL
③ NVL2
④ COALESCE


해설해보기

1. A IS NULL
IS NULL은 주어진 표현식이  NULL 인 경우 TRUE를 반환한다.
따라서 특정 컬럼 A가 IS NULL 이어야 한다는 조건을 주기 위해서 사용한다.

2. NVL( A, B )
NVL()함수는 A값이 NULL이면 B를 출력하는 함수이다.


3. NVL2(A, B, C)
A가 NULL 아닌 경우 B를 반환하고, 
A가 NULL인 경우 C를 반환하는 함수이다. 

4. COALESCE( A, B )
COALESC() 함수는 A가 NULL이면 B를 출력하는 함수이다.

  * NVL() vs COALESCE()
     - COALESCE()함수는 COALESCE( A, B, C ) 가 가능하여
        A가 NULL이면 B, B도 NULL이면 C를 실행할 수 있다


■ 함께 알아두면 좋은 함수
 NULLIF( A, B )
A와 B가 같으면 NULL을 출력하고
A와 B가 같지 않으면 A를 출력한다

 

보기에 제시된 함수에 대한 설명을 확인한 후

SQL 문을 보면 답을 알 수 있습니다.

 

연산자 우선순위에 의해 더하기 보다 곱하기가 우선 수행되므로

10 + X = 14 

X = 14 - 10 = 4

위와 같은 식을 얻을 수 있습니다.

 

즉, 함수로 인해 출력되야 하는 결과는 아래와 같은 것을 확인할 수 있습니다.

20 * Y = 4 

Y = 4/20 = 0.2 

 

 

 ( ? )(NULL, 0.1, 0.2) 에서 0.2가 출력되기 위해서는 

첫 번째 인자가 NULL인 경우 세번째 인자가 출력되어야 합니다.

 

따라서 빈 칸에 적합한 함수는

NVL2 이기 때문에

정답은 입니다.

 

 

직접 실행해보기

SELECT 10+20 * (NVL2(NULL, 0.1, 0.2))
FROM DUAL;

 



 

반응형