[실무에서 바로 쓰는 SQL 기본과 SQL 튜닝][ORACLE] 4강

MinHee·2023년 3월 28일
0
post-thumbnail

예제 17

substr : 문자 추출

substr(컬럼명 또는 '문자열', 시작 위치, 추출할 문자의 개수(시작 문자열 포함한 개수))

from dual

가상의 테이블 환경을 구성하여 질의문의 결과를 확인할 때 사용합니다.
(함수로 실행되는 하나의 결과값을 보기 위함)

select lower(substr(ename,1,1))
from emp;

예제 18

length : 문자 개수

select ename, length(ename)
from emp
where length(ename) >= 5;

예제 19

instr : 특정 문자열의 인덱스

instr(컬럼명 또는 "문자열","검색할 문자열")

select ename
from emp
where instr(ename,'S) > 0; //'S'가 포함된 사원의 이름 출력

문자열 내에 포함되지 않으면, 0을 반환

예제 20

replace : 문자 변경

replace(컬럼명, 변경 전 문자, 변경 후 문자)

select ename, replace(sal, 0, '*')
from emp;
  • 위 쿼리는 보안상의 문제가 있음 (변경 전 문자가 0 이라는 것이 드러난다면)
    아래와 같이 수정

숫자 0번부터 3번까지는 *로 출력되도록 함

select ename, regex_replace(sal, '[0-3]','*')
from emp;

regexp_ : 정규식 표현으로, 뒤에 사용할 함수명을 입력 후 원하는 값을 출력
정규식 함수에 쓸 수 있는 옵션을 추가하여 사용 가능 EX) [0-3]

정규식 함수 : SQL의 기본 함수보다 넓은 범위로 함수를 적용할 때 많이 쓰임

LPAD, RPAD : 특정 철자를 N개만큼 채우기

SELECT ename, lpad(sal,10,'*')
FROM emp;

lpad/rpad(컬럼명, 출력할 전체 자릿수, 왼쪽/오른쪽 남은 공간에 채워넣을 문자)

TRIM, RTRIM, LTRIM : 특정 철자 잘라내기

ltrim/rtrim(컬럼명 또는 "문자열","잘라낼 문자열")
trim("잘라낼 문자열" from 컬럼명 또는 "문자열")

-- 잘라낼 문자열을 입력하지 않으면, 기본값으로 공백을 잘라낸다 (공백이 몇개가 들어갔는지 모를 때 사용)

EX) ename = 'JACK '으로 입력된 행을 찾고자 할때

SELECT ename, sal
FROM emp
WHERE rtrim(ename) = 'JACK';

ROUND : 반올림해서 출력

round(데이터, 자릿수)

자릿수 : 소수 부분이 양의 정수, 정수 부분이 음의 정수 (소수점 = 0)

<-- 자릿수를 입력하지 않으면, 기본값으로 정수부분까지만 출력

SELECT round(876.567,1)  //소수점 기준 왼쪽으로 첫째자리
FROM dual;

출력 : 876.6

SELECT ename, round(sal*0.12)
FROM emp;

TRUNC : 숫자를 버리고 출력

trunc(데이터, 자릿수)
자릿수 : 잘라낸 뒤 남겨놓을 자리 값

SELECT trunc(876.567,1)  //소수점 기준 왼쪽으로 첫째자리
FROM dual;

출력 : 876.5

SELECT ename, trunc(sal*0.12)
FROM emp;

MOD : 나눈 나머지 값 출력

mod(데이터, 나눌 수)

EX) 사원번호가 홀수인 사원들의 사원번호와 이름을 출력

SELECT empno, ename
FROM emp
WHERE mod(empno,2) = 1
profile
성장하는 개발자

0개의 댓글