티스토리 뷰

SQL

[SQL] 3. 문자함수 & 숫자함수

superkong1 2018. 1. 20. 09:53
반응형

3. 문자함수 & 숫자함수

어떤 프로그래밍 언어에서도 마찬가지이지만, 함수를 이용하면 데이터 검색을 더 쉽고 자세하게 구현할 수 있다.

기존 SQL(ORACLE 기준) 내장 함수를 하나씩 사용하면 기록하고자 한다.

우선 함수의 종류는 크게 2가지로 나눌 수 있다.

▣ 함수의 종류 2가지

  1. 단일행 함수: 하나의 값 → 하나의 결과 → 문자, 숫자, 날짜, 변환, 일반
  2. 복수행 함수: 복수의 값 → 하나의 결과 → max, min, avg, sum, count

쉽게 생각하면 복수행 함수는 데이터가 하나인 경우에는 의미가 없다.
데이터 하나의 max, min, avg(평균), sum 모두 동일.
그것이 실질적으로 데이터를 다루는 사람입장에서 단일행 함수와 복수행 함수의 차이이다.

오늘은 단일행 함수 중에서도 문자함수숫자함수에 대해 알아보자.

우선 문자함수의 종류는 대략 아래와 같다.
Upper, Lower, Initcap, Substr, Instr, Rpad, Lpad, Pad, Length, Concat, Replace

공부하면서 느낀것이지만 SQL의 내장함수를 잘 알아놓으면
다른 언어에서 똑같은 기능을 구현하고자 할 때
동일하거나 유사한 이름의 함수로 구성되어 있어 매우 편리하다.

Upper, Lower, Initcap

어떠한 문자 데이터(영어)가 있을 때,
upper는 이를 대문자로, lower는 소문자로,
Initcap은 첫글자만 대문자 나머지는 소문자로 출력하는 함수이다.

Select upper(ename), lower(ename), initcap(ename)
from emp;

Substr

Substr은 특정 철자만 잘라서 출력하는 함수로
substr(출력할 컬럼, 시작 자리수, 시작 자리에서 더해진 자리)로 구성된다.

예시) Select ename, substr(ename,1,3), substr(ename, 2,2), substr(ename,-1,2)
from emp;

K I N G
1 2 3 4
-4 -3 -2 -1
ⓐ substr(ename,2,2)의 경우는 두번째 자리수에서 시작해서
I를 포함한 두번째 자리, 즉 I N인 N까지의 문자를 출력하는 것이다.
ⓑ substr(ename,-1,2)는 마지막 글자인 -1에서 시작했으나
그 뒤에 어떤 숫자가 나오든 맨 끝 글자 이상의 단어는 없으므로
마지막 글자만 출력되게 된다.

instr

instr 함수는 단어에서 철자의 위치를 출력한다.

Select ename, instr(ename,'M')
from emp;

instr과 substr은 다른 언어에서도 많이 사용되며, 문자 데이터를 정제하고 다룰때 상당히 유용하게 사용된다.

pad, rpad, lpad

특정 철자나 공백을 채워넣는 함수들이다.
rpad는 오른쪽에, lpad는 왼쪽에 공백을 채운다.

Select ename, lpad(sal,10,'') ← 총 10자리, 왼쪽부터 빈 공간 로 채워넣기
from emp;

length

length 함수는 철자의 개수를 세는 함수이다.

Select ename, length(ename)
from emp
where length(ename)>=6;

Concat

두 컬럼의 데이터를 연결해서 출력하는 함수로
사실 '||'이라는 간편한 기호가 있어 잘 사용하지 않는 편이다.

Select concat(ename, deptno)
from emp;

select ename || deptno
from emp;
역시 동일한 결과를 출력한다.

replace

어떤 특정 철자를 다른 철자로 변경해서 출력하는 함수이다.
함수 적용 여부를 위해 기존 데이터 셋과 비교해보자면

<기존 데이터 셋>

Select ename, replace(sal,0,'*')
from emp;

<변경된 데이터 셋>

숫자함수는 round, trunc, mod가 주로 사용된다.

round

반올림하는 함수이며, 사용방법은
round(반올림할 숫자 데이터, 자리수)이다.

예시) 748.876이라는 숫자를 반올림 시 자리수에 따라 아래의 값이 출력된다.
Select 748.876, round(748.876,1) → 748.9
round(748.876,2) → 748.88
round(748.876,0) → 749
round(748.876,-1) → 750
from dual;

숫자 7 4 8 . 8 7 6 자리수 -3 -2 -1 0 1 2 3 → 남을 마지막 자리수를 입력한다.

trunc

반올림하지 않고 그냥 버리는 함수이다.

예시) 748.876이라는 숫자를 버릴 시 자리수에 따라 아래의 값이 출력된다.
Select 748.876, trunc(748.876,1) → 748.8
trunc(748.876,2) → 748.87
trunc(748.876,0) → 748
trunc(748.876,-1) → 740
from dual;

숫자 7 4 8 . 8 7 6 자리수 -3 -2 -1 0 1 2 3 → 남을 마지막 자리수를 입력한다.

mod

나눈 나머지 값을 출력하는 함수

select mod(10,3) from dual;

=================이 글은 Markdown을 활용해 작성하였습니다=================

반응형

'SQL' 카테고리의 다른 글

[SQL] 6. 그룹함수(복수행함수)  (0) 2018.01.23
[SQL] 5. 일반함수  (0) 2018.01.22
[SQL] 4.날짜함수 & 변환함수  (0) 2018.01.21
[SQL] 2. 데이터 제한 및 정렬  (0) 2018.01.20
[SQL] 1. select 문을 사용하여 데이터 검색  (0) 2018.01.18
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함