OLYMPIC 테이블에서 MASCOT컬럼 값이 NULL 인 경우, 이를 'None'으로 바꾸어 출력하라.
SELECT host_year, host_nation, NVL(mascot, 'None') AS no_mascot FROM olympic LIMIT 10; 또는 SELECT host_year, host_nation, IFNULL(mascot, 'None') AS no_mascot FROM olympic LIMIT 10;
NVL와 IFNULL함수는 첫 번째 매개변수가 NULL 값이면 두 번째 매개변수를 반환하는 함수이다.
OLYMPIC 테이블에서 MASCOT가 NULL이면 'NO'를 NULL이 아니면 'YES' 를 출력하라.
SELECT host_year, host_nation, NVL2(mascot, 'NO', 'YES') AS mascot_yn FROM olympic LIMIT 10; 또는 SELECT host_year, host_nation, CASE WHEN mascot IS NULL THEN 'NO' ELSE 'YES' END AS mascot_yn FROM olympic LIMIT 10;
NVL2 함수는 첫 번째 매개변수가 NULL 값이 아니면 두 번째 매개변수로, NULL 값이면 세 번째 매개변수를 반환하는 함수이다. 이를 CASE WHEN 연산식을 사용한 구문으로 대체할 수 있다.
OLYMPIC 테이블에서 HOST_CITY가 'Seoul' 인 것만 Local Number(지역번호)를 '02' 로 출력하라.
SELECT host_city, DECODE(host_city, 'Seoul', '02', '--') AS "Local Number" FROM olympic LIMIT 10; 또는 SELECT host_city, CASE WHEN host_city = 'Seoul' THEN '02' ELSE '--' END AS "Local Number" FROM olympic LIMIT 10;
DECODE 함수는 첫 번째 매개변수와 두 번째 매개변수를 비교하여 동일하면 세 번째 매개변수를, 다르면 네 번째 매개변수를 반환하는 함수이다. 이를 CASE WHEN 연산식을 사용한 구문으로 대체할 수 있다.
PARTICIPANT 테이블에서 GOLD 수가 30개 이상인 국가의 레벨을 1, GOLD 수가 20개 이상인 국가의 레벨을 2, GOLD 수가 20개 미만인 국가의 레벨을 3으로 표현하는 컬럼을 추가하여 조회하라. (단, 2004년도에 금메달 획득 수가 15개 이상인 국가만 출력)
SELECT host_year, nation_code, gold, CASE WHEN gold >= 30 THEN 1 WHEN gold >= 20 THEN 2 WHEN gold < 20 THEN 3 END AS "LEVEL" FROM participant WHERE host_year=2004 AND gold>=15;
CASE~ END절은 WHEN <표현식> THEN <값>의 형식을 반복하여 조건 별로 값을 반환한다. WHEN절에서 모든 조건을 만족하지 않을 때는 ELSE절의 값을 반환한다.
PARTICIPANT 테이블에서 NATION_CODE가 'KOR' 또는 'JPN' 인 GOLD 컬럼을 출력하라.
SELECT host_year, nation_code, gold FROM participant WHERE nation_code IN ('KOR', 'JPN'); 또는 SELECT host_year, nation_code, gold FROM participant WHERE nation_code= 'KOR' OR nation_code = 'JPN';
IN 함수는 소괄호 안에 나열된 값들의 집합에서 컬럼의 값이 존재하면 참을 반환하는 함수이다. IN 함수는 OR 연산자로 바꾸어 표현할 수 있다.
ATHLETE 테이블에서 성이 Hong인 운동 선수를 조회하라.
SELECT name, nation_code, event FROM athlete WHERE NAME LIKE 'Hong %';
'%' 를 와일드 카드 문자로 사용하여 LIKE 검색을 수행할 수 있다. 또한, 두 개의 작은 따옴표('') 또는 백슬래시(\)를 사용하여 특수 문자를 이스케이프(escape)할 수 있다.
HISTORY 테이블에서 SCORE 컬럼 값이 '__:__.%' 형태인 것을 출력하라.
SELECT * FROM history WHERE host_year=1996 AND score LIKE '__:__.%';
'_' 문자는 한 글자를 의미하는 와일드카드 문자이다. 한글과 영문 모두 한 글자를 의미하는 것으로서 한 바이트를 의미하는 것은 아니다.
- 강좌 URL : http://www.gurubee.net/lecture/2032
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.