문제

 

PATIENT 테이블에서 12세 이하인 여자환자의 환자이름, 환자번호, 성별코드, 나이, 전화번호를 조회하는 SQL문을 작성해주세요. 이때 전화번호가 없는 경우, 'NONE'으로 출력시켜 주시고 결과는 나이를 기준으로 내림차순 정렬하고, 나이 같다면 환자이름을 기준으로 오름차순 정렬해주세요.


예시

 

- IFNULL을 이용하여 NULL값 대체해주는 방법

 

SELECT IFNULL(칼럼명(다른 표현식), "대체값") FROM 테이블

 

나의 정답

SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO, "NONE") AS TLNO
FROM PATIENT
WHERE AGE <= 12 AND GEND_CD = "W"
ORDER BY AGE DESC, PT_NAME ASC

 

- IF 문을 이용하여 NULL 값 대체해주는 방법

 

SELECT IF(칼럼명 IS NULL, "대체값"(NULL 일 경우), "대체값2"(NULL이 아닐경우)) FROM 테이블

 

나의 정답

SELECT PT_NAME, PT_NO, GEND_CD, AGE, IF (TLNO IS NULL, "NONE", TLNO) AS TLNO
FROM PATIENT
WHERE AGE <= 12 AND GEND_CD = "W"
ORDER BY AGE DESC, PT_NAME ASC

 

 

- CASE WHEN 구문을 이용하는 방법

 

SELECT 

CASE WEHN 칼럼명 IS NULL THEN "대체값"

WHEN 조건명 THEN "대체값2"

ELSE "대체값3"

END AS 별칭

FROM 테이블

 

 

나의 정답

SELECT PT_NAME, PT_NO, GEND_CD, AGE, 
CASE WHEN TLNO IS NULL THEN "NONE"
ELSE TLNO 
END AS TLNO
FROM PATIENT
WHERE AGE <= 12 AND GEND_CD = "W"
ORDER BY AGE DESC, PT_NAME ASC

 

 

또 다른 알아야 할것

 

- NULLIF 구문을 이용하는 방법

 

NULLIF(expr1, expr2)

 

=> expr1값과 expr2값을 비교해서 true가 아니면 expr1을 return, true 이면 NULL을 return해준다.

 

예시

SELECT NULLIF(1,1)
--> NULL

SELECT NULLIF(1,2)
--> 1

 

+ Recent posts