본문 바로가기

초보자를 위한 SQL 200제

PART 2 「초급」 SQL 기초 다지기 (016 ~ 025)

PART 2 「초급」 SQL 기초 다지기

016 대소문자 변환 함수 배우기(UPPER, LOWER, INITCAP)
017 문자에서 특정 철자 추출하기(SUBSTR)
018 문자열의 길이를 출력하기(LENGTH)
019 문자에서 특정 철자의 위치 출력하기(INSTR)
020 특정 철자를 다른 철자로 변경하기(REPLACE)
021 특정 철자를 N개 만큼 채우기(LPAD, RPAD)
022 특정 철자 잘라내기(TRIM, RTRIM, LTRIM)
023 반올림해서 출력하기(ROUND)
024 숫자를 버리고 출력하기(TRUNC)
025 나눈 나머지 값 출력하기(MOD)


교재 예제 파일 다운로드

http://infopub.co.kr/index.asp

 

정보문화사

IT도서의 표준,정보문화사가 쉽고,가깝게 IT세상으로 여러분을 안내해드리겠습니다

infopub.co.kr


016 대소문자 변환 함수 배우기(UPPER, LOWER, INITCAP)

1) 사원 테이블의 이름을 출력하는데 첫 번째 칼럼은 이름을 대문자로 두 번째 칼럼은 이름을 소문자로 출력하고 세 번째 컬럼은 이름의 첫 번째 철자는 대문자로 하고 나머지는 소문자로 출력합니다.

 

📌 문제 정리

- 사원 테이블의 이름을 출력 from emp

SELECT

- 첫 번째 칼럼은 이름을 대문자 UPPER(ename)

- 두 번째 칼럼은 이름을 소문자로 출력 LOWER(ename)

- 세 번째 컬럼은 이름의 첫 번째 철자는 대문자로 하고 나머지는 소문자로 출력  INITCAP(ename) 

 

💡 함수

UPPER(ename) 대문자로 출력

LOWER(ename) 소문자로 출력

INITCAP(ename) 첫 번째 철자는 대문자로 하고 나머지는 소문자로 출력

UPPER 함수와 LOWER 함수는 테이블 내 특정 문자 데이터를 검색하고자 할 때 데이터가 대문자인지 소문자로 저장되어 있는지 확실하지 않을 때 정확한 데이터 검색을 위해 필요합니다.


📌 문제 풀이

SELECT UPPER(ename), LOWER(ename), INITCAP(ename) 
	FROM emp;

2) 이름이 scott인 사원의 이름과 월급을 조회

사원 테이블이 1억건이 넘는 대요량 테이블이라고 가정해보고 사원 대문자로 되어 있는지 소문자로 되어 있는지 모른다고 하면 LOWER(ename)='scott' 또는 UPPER(ename)='SCOTT' 이라고 작성해야 데이터를 확실하게 반환할 수 있게 됩니다.

SELECT ENAME, SAL
	FROM emp
    WHERE LOWER(ename) = 'scott';

017 문자에서 특정 철자 추출하기(SUBSTR)

영어 단어 SMITH에서 SMI만 잘라내서 출력합니다.

SELECT SUBSTR('SMITH',1,3)
	FROM DUAL;

SUBSTR 함수는 문자에서 특정 위치의 문자열을 추출합니다.

SELECT SUBSTR('SMITH',1,3) 에서 1은 추출할 철자의 시작 위치 번호입니다. 3은 시작 위치로부터 몇 개의 철자를 추출할지를 정하는 숫자입니다.

 

SELECT SUBSTR('SMITH',-2,2) 쿼리는 SMITH 문자에서 -2 자리인 T부터 두 개의 철자를 추출하여 TH를 반환합니다.

 

SELECT SUBSTR('SMITH',2) 쿼리는 SMITH 문자에서 2 자리인 M부터 끝까지 추출하여 MITH를 반환합니다.

- 몇 개의 철자를 추출할지 정해주지 않으면 끝까지 추출


018 문자열의 길이를 출력하기(LENGTH)


019 문자에서 특정 철자의 위치 출력하기(INSTR)

INSTR 함수는 문자에서 특정 철자의 위치를 출력하는 함수입니다. 

abcdef@naver.com 이메일에서 naver.com만 추출하고 싶다면 INSTR과 SUBSTR을 이용하면 추출할 수 있습니다. 먼저 @의 위치를 INSTR로 추출합니다.

SELECT INSTR('abcdefg@naver.com', '@')
	FROM DUAL;

출력 결과 : 8


SUBSTR에 INSTR 함수로 추출한 @의 자리 숫자 다음 철자를 시작 숫자로 사용하여 다음과 같이 쿼리로 NAVER.COM을 추출합니다.

SELECT SUBSTR(abcdefg@naver.com, INSTR('abcdefg@naver.com', '@')+1)
	FROM DUAL;

시작 위치 : INSTR('abcdef@naver.com', '@')+1

=> 9

 

출력 결과 : naver.com


이번에는 오른쪽에 .com을 잘라내고 naver만 출력합니다.

 

SELECT RTRIM(SUBSTR(abcdefg@naver.com, INSTR('abcdefg@naver.com', '@')+1),'com')
	FROM DUAL;

RTRIM

함수는 문자에서 특정 철자의 잘라내는 함수입니다. 

 

출력 결과 : naver


020 특정 철자를 다른 철자로 변경하기(REPLACE)
021 특정 철자를 N개 만큼 채우기(LPAD, RPAD)



022 특정 철자 잘라내기(TRIM, RTRIM, LTRIM)

LTRIM() : 문자열의 왼쪽(앞) 공백을 제거

RTRIM() : 문자열의 오른쪽(뒤) 공백을 제거

TRIM() : 문자열의 앞 뒤 공백 제거


023 반올림해서 출력하기(ROUND)



024 숫자를 버리고 출력하기(TRUNC)

1) 876.567 숫자를 출력하는 소수점 두 번째 자리인 6과 그 이후의 숫자들을 모두 버리고 출력합니다.

SELECT '876.567' as 숫자, TRUNC(876.567,1) 
	FROM dual;

출력 결과 :


 

2) 876.567 숫자를 출력할 때 소수점 이전 일의 자리부터 바로 버리고 출력합니다

- 소수점 이전 일의 자리 => 6

- 6부터 버리고 출력

SELECT '876.567' as 숫자, TRUNC(876.567,-1) 
	FROM dual;

출력 결과 : 870

 



025 나눈 나머지 값 출력하기(MOD)