16. 대소문자 변환 함수 배우기
-- 예제16. 사원테이블에서 이름을 출력하는 모두 소문자로 출력하세요.
select lower (ename), upper(ename), initcap(ename)
from emp ;
-- 예제16_문제1. 이름이 scott인 사원의 이름과 월급을 출력하는데 이름을 소문자로 검색해도 결과가 출력되게 하세요.
select ename, sal
from emp
where lower(ename) = 'scott' ;
1) 작성법 : lower(컬럼명 또는 "문자열")
2) lower:소문자 / upper:대문자 /initcap: 첫글자는 대문자 다른문자는 소문자로 출력
17. 문자에서 특정 철자 추출하기
-- 예제17. SMITH 라는 단어에서 MI 만 추출해서 출력하세요
select substr('SMITH', 2, 2)
from dual ;
-- 예제 17_문제1. 사원 테이블에서 이름을 출력하는데 이름의 첫글자만 출력하고 첫글자를 소문자로 출력하세요
select lower( substr(ename, 1, 1) )
from emp ;
1) 작성법 : substr(컬럼멸 또는 "문자열", 시작 위치: 시작 철자 인덱스, 추출할 문자의 개수: 잘라낼 갯수 )
2) from dual : 가상의 테이블 환경을 구성하여 질의문의 결과를 확인할 때 사용.
3) dual : 함수로 실행되는 하나의 결과값을 보기위한 가상의 테이블
18. 문자열의 길이 출력하기
-- 예제 18. 이름을 출력하고 이름의 철자의 길이를 출력하세요.
select ename, length(ename)
from emp ;
-- 예제 18_문제1. 이름의 철자의 길이가 5개 이상인 사원들의 이름과 이름의 철자의 길이를 출력하세요.
select ename, length(ename)
from emp
where length(ename) >= 5 ;
19. 문자에서 특정 철자의 위치 출력하기
-- 예제 19. SMITH 이라는 단어에서 알파벳 M 이 몇번째 자리에 있는지 출력하세요.
select instr('SMITH', 'M')
from dual ;
-- 예제 19_문제1. 이름에 철자 S 가 포함된 사원들의 이름을 출력하세요. (instr)
select ename , instr(ename, 'S')
from emp
where instr(ename, 'S') > 0 ;
-- 'S' 가 위치한 자리를 알려줌.
select ename , instr(ename, 'S')
from emp ;
20. 특정 철자를 다른 철자로 채우기
-- 예제 20. 이름과 월급을 출력하는데 숫자 0 을 * 로 출력하세요.
select ename, replace(sal, 0, '*')
from emp ;
-- 예제 20_문제1. 이름과 월급을 출력하는데 숫자 0번부터 3번까지는 *로 출력되게 하세요.
select ename, regexp_replace(sal,'[0-3]', '*')
from emp ;
1) replace(컬럼명, 변경전 문자, 변경후 문자)
2) 정규식 함수(SQL의 기본함수보다 넓은 범위로 함수를 적용할 떄 많이 쓰임) : regexp_replace(컬럼명, '[범위]', 변경후 문자)
21. 특정 철자를 N개 만큼 채우기
-- 예제21. 이름과 월급을 출력하는데 월급 컬럼의 자릿수를 10자리로 하고, 월급을 출력하고 남은 나머지 자리에 별표(*)를 채워서 출력해보세요.
select ename, lpad(sal, 10, '*')
from emp ;
-- 예제 21_문제1. 이름과 월급을 출력하는데 월급 컬럼의 자릿수를 10자리로 하고, 월급을 출력하고 남은 나머지 자리 오른쪽에 별표(*)를 채워서 출력하세요
select ename, rpad(sal, 10, '*')
from emp ;
1) lpad(컬럼명, 출력할 전체 자릿수, 왼쪽 남은 공간에 채워 넣을 문자)
22. 특정 철자 잘라내기
-- 예제 22. 다음과 같이 smith 영어단어에서 앞에 s를 잘라내서 출력하고 뒤에 h를 잘라서 출력하고 양쪽 s를 잘라서 출력하세요
select 'smith', ltrim('SMITH', 'S'), rtrim('SMITH', 'H'), trim('S' from 'SMITHS')
from dual ;
-- 예제 22_문제1. 다음의 데이터를 사원 테이블에 입력하고 이름이 JACK인 사원의 이름과 월급을 출력하세요.
insert into emp(empno, ename, sal) values(3821, 'JACK ', 3000) ;
select ename, sal
from emp
where rtrim(ename)='JACK' ;
23. 반올림해서 출력하기
-- 예제23. 876.567 숫자를 출력하는데 소수점 두번째 자리인 6에서 반올림해서 출력하세요
select round(876.567, 1)
from dual ;
-- 예제23_문제1. 사원 테이블에서 이름과 월급이 12%을 출력하는 소수점 이하는 출력되지 않도록 반올림하세요
select ename, round(sal * 0.12)
from emp ;
1) round(데이터, 자릿수) // round 함수에서 자릿수는 소수 부분이 양의 정수, 정수 부분이 음의 정수로 되어 있다. (기준은 소수점)
24. 숫자를 버리고 출력하기
-- 예제24. 876.567 숫자를 출력하는데 소수점 두번째 자리인 6과 그 이후의 숫자들을 모두 버리고 출력하세요.
select trunc(876.567, 1)
from dual ;
-- 예제24_문제1. 사원 테이블에서 이름과 월급의 12%을 출력하는데 소수점 이하는 출력되지 말고 버리세요
select ename, trunc( sal*0.12, 0 )
from emp ;
1) trunc 함수에서 자릿수는 잘라낸 뒤 남겨놓을 자리 값을 작성하면 됨.
25. 나눈 나머지 값 출력하기
-- 예제 25. 숫자 10을 3으로 나눈 나머지 값을 출력하세요
select mod(10,3)
from dual ;
-- 예제25_문제1. 사원번호가 홀수인 사원들의 사원번호와 이름을 출력하세요.
select empno, ename
from emp
where mod(empno, 2) =1 ;
26. 날짜 간 개월 수 출력하기
-- 예제26. 이름을 출력하고 입사한 날짜부터 오늘까지 총 몇 달은 근무했는지 출력해보세요.
-- 오늘 날짜를 출력하는 방법
select sysdate
from dual ;
select ename, round ( months_between( sysdate, hiredate) )
from emp ;
-- 예제26_문제1. 내가 태어난 날로부터 오늘까지 총 몇 달인지 출력하세요
select round( months_between( sysdate, '1993/03/09'))
from dual ;
1) months_between() 함수에서는 기준 날짜1이 기준날짜2 보다 큰 날짜(현재로부터 가까운)이어야 함.
'SQL 기초 실무 > 기초편' 카테고리의 다른 글
23.09.18. SQL Developer 예제 49 ~ 55번 (0) | 2023.09.18 |
---|---|
23.09.15. SQL Developer 예제 38 ~ 48번 (0) | 2023.09.18 |
23.09.13. SQL Developer 예제 27 ~ 37번 (0) | 2023.09.18 |