[SQL] 특정 조건으로 데이터 출력하기
Updated:
문자에서 특정 철자 추출하기(SUBSTR)
SELECT SUBSTR('SMITH',2,2) FROM DUAL;
- substr(‘SMITH’,시작철자 인덱스, 잘라낼 갯수)
- DUAL : 함수로 실행되는 하나의 결과값을 보기위한 가상의 테이블
예제) 회원 테이블에서 이름의 첫 글자를 소문자로 출력하세요.
select lower(substr(ename,1,1)) from emp;
문자열의 길이를 출력하기(LENGTH)
예제) 회원 테이블에서 이름과 이름의 길이를 출력하는데 절차가 5 이상인회원의 이름을 출력하세요.
select ename, length(ename) from emp where length(ename) >= 5;
문자에서 특정 절차의 위치 출력하기(INSTR)
예제) 이름에 철자 S가 포함된 사원들의 이름을 출력하세요.
select ename from emp where instr(ename, 'S') > 0;
특정 철자를 다른 철자로 변경하기(REPLACE)
- replace(컬럼명, 변경전 문자, 변경 후 문자)
예제) 이름과 월급을 출력하는데 숫자 0번부터 3번까지는 *로 출력되게 하세요.
select ename, regexp_replace(sal,'[0-3]','*') from emp;
- regexp_replace : 정규 표현식을 사용하여 문자열에서 특정 패턴을 찾아 다른 문자열로 대체하는 SQL 함수.
- 정규식 함수 : sql의 기본 함수보다 넓은 범위로 함수를 적용할 때 많이 쓰인다.
특정 철자를 N개 만큼 채우기(LPAD, RPAD)
- LPAD 또는 RPAD(컬럼명, 전체길이, “왼/오 남은 공간에 채워넣을 문자열”)
예제) 이름과 월급을 출력하는데 월급 컬럼의 자릿수를 10자리로 하고, 월급을 출력하고 남은 나머지 자리 오른쪽에 별표(*)를 채워서 출력하세요.
select ename, rpad(sal, 10, '*') from emp;
특정 철자 잘라내기(TRIM, RTRIM, LTRIM)
- 작성법 : ltrim 또는 rtrim(컬럼명 또는 “문자열”, “잘라낼 문자열”), trim(”잘라낼 문자열” from “문자열 전체”)
예제) 다음의 데이터를 사원 테이블에 입력하고 이름이 JACK인 사원의 이름과 월급을 출력하세요.
insert into emp(empno, ename, sal) values (3821, 'JACK ', 3000);
SELECT ename, sal FROM emp where rtrim(ename)='JACK';
- ltrim / rtrim / trim 함수에서 잘라낼 문자열을 입력하지 않으면 기본값으로 공백을 잘라낸다.
반올림해서 출력하기(ROUND)
- 작성법 : round(데이터, 자릿수)
- round 함수에서 자릿수는 소수 부분이 양의 정수, 정수 부분이 음의 정수로 되어 있다. (기준은 소수점)
- 자릿수를 입력하지 않으면 기본값으로 정수부분까지만 출력한다.
select ename, round(sal * 0.12) from emp;
숫자를 버리고 출력하기(TRUNC)
- trunc 함수에서 자릿수는 잘라낸 뒤 남겨놓을 자리 값을 작성하면 된다.
예제) 사원 테이블에서 이름과 월급의 12%를 출력하는데 소수점 이하는 출력되지 말고 버리세요.
select ename, trunc(sal * 0.12) from emp;
나눈 나머지 값 출력하기(MOD)
- 작성법 : mod(데이터, 나눌 수)
- 사원번호가 홀수인 사원들의 사원번호와 이름을 출력하세요.
select empno, ename from emp where mod(empno, 2) = 1;