[SQLD 퀴즈] NULL

아래 NVL 함수와 ISNULL 함수를 사용한 SQL 문장은 벤더 공통적으로 CASE 문장으로 표현할 수 있다. 아래 CASE SQL 문장의 ㉠안에 들어갈 내용을 작성하시오.

------------------------------ 아             래 ---------------------------

 [Oracle 사례]
 SELECT PLAYER_NAME 선수명, POSITION, NVL(POSITION,'없음') 포지션
 FROM PLAYER
 WHERE TEAM_ID = 'K08'

 

 [SQL Server 사례]
 SELECT PLAYER_NAME 선수명, POSITION, ISNULL(POSITION,'없음') 포지션
 FROM PLAYER
 WHERE TEAM_ID = 'K08'

 

 [CASE 문장 사례]
 SELECT PLAYER_NAME 선수명, POSITION,
           CASE WHEN (        ㉠          )

                    THEN '없음'
                    ELSE POSITION
           END AS 포지션
 FROM PLAYER
 WHERE TEAM_ID = 'K08'

 

[출처] http://www.dbguide.net/da.db?cmd=snb13_view&boardGroupUid=6&boardConfigUid=81&boardUid=152746

 

 

 

 

 

 

* 정답 및 해설 *

 

정답 : POSITION IS NULL
 
아래 NVL 함수와 ISNULL 함수를 사용한 SQL 문장은 벤더 공통적으로 CASE 문장으로 표현할 수 있다.
본 문제는 CASE 표현 중  SEARCHED_CASE_EXPRESSION에 들어갈 조건을 문의한 것임


CASE
       WHEN  CONDITION THEN RETURN_EXPR
       ELSE  표현절
END

 

추가) POSITION = NULL 이라고 하면 안됨!

 

POSITION IS NULL 과 POSITION=NULL은 다르다.

 

SELECT PLAYER_NAME 선수명, POSITION,
CASE WHEN POSITION IS NULL
THEN '없음'
ELSE POSITION
END AS 포지션
FROM PLAYER
WHERE TEAM_ID = 'K08';

 

 

 

 

SELECT PLAYER_NAME 선수명, POSITION,
CASE WHEN POSITION = NULL
THEN '없음'
ELSE POSITION
END AS 포지션
FROM PLAYER
WHERE TEAM_ID = 'K08';