Contents
문제 문제
PATIENT
테이블에서 12세 이하인 여자환자의 환자이름, 환자번호, 성별코드, 나이, 전화번호를 조회하는 SQL문을 작성해주세요.
이때 전화번호가 없는 경우, 'NONE'으로 출력시켜 주시고
결과는 나이를 기준으로 내림차순 정렬하고, 나이 같다면
환자이름을 기준으로 오름차순 정렬해주세요.
이번 문제에서 새로운 점은 전화번호가 없는 경우, 'NONE'으로 출력해 달라는 점이 있었습니다.
이 조건을 어떻게 해결해야 하는지 알아내야 했습니다.
SELECT pt_name, pt_no, gend_cd, age, tlno from PATIENT
where gend_cd = 'W' and age <= 12
order by age desc, pt_name;
위의 쿼리문과 같이 코드를 실행한다면

데이터들은 나오지만 tlno 컬럼에서는 전화번호가 있는 한나와 바라의 전화번호는 나오지만
다른 친구들의 전화번호는 빈 칸으로 나오고 있습니다.
문제에서는 이런 빈칸을 NONE으로 표시 해 달라고 하고 있습니다.
이 조건을 충족시키기 위해서는
where 절을 사용하는 것이 아닌 SELECT 절에서 해결해야합니다.
ifnull(조건을 걸 컬럼명, NULL값일 때 변환할 문자)
select 를 할 때 IFNULL( ) 을 사용해 안나, 스티치, 뽀뽀 의
tlno의 데이터 칸을 NONE으로 나올 수 있도록 해야합니다.
개선된 쿼리문으로는
SELECT pt_name, pt_no, gend_cd, age, ifnull(tlno, 'NONE') as tlno
from PATIENT
where gend_cd = 'W' and age <= 12
order by age desc, pt_name;
위와 같이 작성해 주면 tlno에서 빈칸이었던 친구들은 NONE으로 표시되어 출력됩니다.

Share article