728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/132201
정답 코드
# SELECT IFNULL(Column명, "Null일 경우 대체 값") FROM 테이블명;
SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO, 'NONE')
FROM PATIENT
WHERE AGE <= 12 AND GEND_CD = 'W'
ORDER BY AGE DESC, PT_NAME ASC; # ASC는 생략가능
/*
CASE
WHEN 조건식1 THEN 식1
WHEN 조건식2 THEN 식2
...
ELSE 조건에 맞는경우가 없는 경우 실행할 식
END
*/
SELECT PT_NAME, PT_NO, GEND_CD, AGE,
CASE
WHEN TLNO IS NULL THEN "NONE"
ELSE TLNO
END
FROM PATIENT
WHERE AGE <= 12 AND GEND_CD = 'W'
ORDER BY AGE DESC, PT_NAME ASC;
/*
// NULL 처리 상황
SELECT COALESCE(Column명1, Column명1이 NULL인 경우 대체할 값)
FROM 테이블명
// 배타적 OR 관계 열
// Column1 ~ 4 중 NULL이 아닌 첫 번째 Column을 출력
SELECT COALESCE(Column명1, Column명2, Column명3, Column명4)
FROM 테이블명
*/
# TLNO이 NULL이면 그 다음 NULL이 아닌 대채값 NONE이 출력
SELECT PT_NAME, PT_NO, GEND_CD, AGE, COALESCE(TLNO, "NONE")
FROM PATIENT
WHERE AGE <= 12 AND GEND_CD = 'W'
ORDER BY AGE DESC, PT_NAME;
실패한 코드
SELECT PT_NAME, PT_NO, GEND_CD, AGE, IF(IS NULL(TLNO), 'NONE', TLNO) AS TLNO
FROM PATIENT
WHERE AGE <= 12
AND GEND_CD = 'W'
ORDER BY AGE DESC, PT_NAME ASC;
/*
SQL 실행 중 오류가 발생하였습니다.
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IS NULL(TLNO), 'NONE', TLNO)
FROM PATIENT
WHERE AGE <= 12
AND GEND_CD = 'W'
ORDE' at line 1
*/
728x90
반응형
'Problem Solving > 프로그래머스' 카테고리의 다른 글
[MySQL] 프로그래머스 144853. 조건에 맞는 도서 리스트 출력하기 (0) | 2024.02.20 |
---|---|
[MySQL] 프로그래머스 131112. 강원도에 위치한 생산공장 목록 출력하기 (0) | 2024.02.20 |
[MySQL] 프로그래머스 133025. 과일로 만든 아이스크림 고르기 (0) | 2024.02.20 |
[MySQL] 프로그래머스 132203. 흉부외과 또는 일반외과 의사 목록 출력하기 (0) | 2024.02.20 |
[MySQL] 프로그래머스 131120. 3월에 태어난 여성 회원 목록 출력하기 (0) | 2024.02.20 |