오라클SQL 문자와 숫자 함수
Updated:
문자 숫자 함수
학습 주제
- 문자함수 사용하기
- 숫자함수 사용하기
학습 목표
- 문자함수를 이용한 데이터 처리작업을 할 수 있다.
- 숫자함수를 이용한 데이터 처리작업을 할 수 있다.
문자함수 사용하기
함수는 동작하는 방식에 따라 크게 3가지 나뉜다.
- 줄마다 처리할 수 있는 함수 단일행 함수
- 여러 개의 데이터를 가지고 집계를 계산하는 그룹 함수
- SELECT된 결과를 함수로 다시 한 번 더 분석하는 윈도우 함수
이렇게 3가지가 있다. 이번 시간은 단일행 함수를 알아본다.
단일 행 함수
- 데이터 조작을 위해 사용한다.
- 인자(Argument)를 이용해 작업 수행 후 결과를 반환한다.
- 행당 하나의 결과를 반환한다.
- SELECT, WHERE, ORDER BY 절에 사용할 수 있다.
- 중첩사용이 가능하다.
단일 행 함수의 종류
- 문자 함수 - 문자를 입력하면 문자 또는 숫자 값을 반환한다.
- 숫자 함수 - 숫자를 입력하면 숫자 값을 반환한다.
- 날짜 함수 - 날짜 유형의 값을 연산한다.
- 변환 함수 - 데이터 유형을 변환한다.
- 기타 함수 - 타입에 상관없이 적용이 가능하다.
함수 | 내용 |
---|---|
LOWER | 대상 문자열을 모두 소문자로 변환한다. |
UPPER | 모든 문자를 대문자로 변경한다. |
INITCAP | 문자열 단어의 첫 문자는 대문자 나머지는 소문자로 변경한다. |
CONCAT(s1, s2) | 두 문자열을 연결한다. |
SUBSTR(s, m, n) | 문자열 s를 m부터 길이n 만큼 문자열을 추출한다. |
LENGTH(s) | 문자의 길이를 숫자 값으로 표시한다. |
CHR(n) | ASCII 코드값이 n인 문자 변환한다. |
ASCII(s) | S문자의 ASCII코드값 변환한다. |
예시
SELECT ename, job LOWER(job), INITCAP(job) FROM emp WHERE deptno = 10; --CONCAT은 ||로 대신 사용할 수 있다. SELECT empno,ename, job, CONCAT(ename, job) 결과 FROM emp WHERE deptno = 10; SELECT empno, ename, job, sal, deptno FROM emp WHERE SUBSTR(ename, 1, 1) > 'K'; SELECT empno, ename, length(ename), sal FROM emp WHERE deptno = 20; SELECT ename, SUBSTR(ename, 1, 3) FROM emp WHERE deptno = 20;
문자함수2
함수 | 내용 |
---|---|
LPAD(s1, n, s2) | s1문자열을 n글자 수 만큼 만들려고 할 때, s2를 왼쪽에 붙여서 만든다. |
RPAD(s1, n, s2) | s1문자열을 n글자 수 만큼 만들려고 할 때, s2를 오른쪽에 붙여서 만든다. |
LTRIM(s, c) | 대상 문자열(s)에 c라는 문자가 왼쪽에 나타나면 제거한다. |
RTRIM(s, c) | 대상 문자열(s)에 c라는 문자가 오른쪽에 나타나면 제거한다. |
TRIM | 필드 문자 앞 뒤에 나오는 특정 문자를 제거한다. |
TRANSLATE(s, from, to) | 문자열(s)에 from의 문자를 to 문자로 대체하는데 이 때 단독 변환으로 바뀐다. |
REPLACE(s, p, r) | 문자열(s)를 p문자를 r문자로 대체한다. |
예시
SELECT ename, LPAD(ename, 7, '*'), RPAD(ename, 7, '*') FROM emp; /* 결과: ename: SMITH, LPAD: **SMITH, RPAD: SMITH** */ SELECT ename, LTRIM(ename, 'S'), RTRIM(ename, 'T') FROM emp; /* 결과: ename: SCOTT, LTRIM: COTT, RTRIM: SCO <- T가 안나올 때까지 제거. */ SELECT ename, TRIM ('T' FROM ename) FROM emp; -- 양쪾에서 삭제 SELECT ename, REPLACE(ename, 'CO', '*?') FROM emp; /* 결과: ename: SCOTT, REPLACE: S*?TT ename: JONES, REPLACE: JONES <- TRANSLATE와 비교 */ SELECT ename, TRANSLATE(ename, 'CO', '*?') FROM emp; /* 결과: ename: SCOTT, TRANSLATE: S*?TT ename: JONES, TRANSLATE: J?NES ename: CLARK, TRANSLATE: *LARK 한 자씩 다로 바뀐다. */
숫자 함수 사용하기
숫자 함수
함수 | 내용 |
---|---|
ROUND | 지정된 자리로 반올림 수행한다. 아무것도 안하면 정수자리(DEFAULT 0)까지 반올림. |
TRUNC | 지정된 자리에 버림 수행한다. DEFAULT 0 : 정수자리까지 버린다. |
MOD(M, N) | M을 N으로 나눈 나머지 |
ABS | 숫자 값을 절대값으로 바꾼다. |
FLOOR | 해당 수보다 작거나 같은 정수 중 가장 큰 정수 값을 반환한다. |
CEIL | 해당 수보다 크거나 같은 정수 중 가장 작은 정수 값을 반환한다. |
SIGN | 숫자가 양수면 1, 음수면 -1, 0이면 0을 반환한다. |
POWER(M, N) | M의 N승 |
예시
SELECT ROUND(123.456) 결과1, ROUND(123.456, 2) 결과2, ROUND(123.456, -2) 결과3 FROM dual; /* 결과1: 123 (정수자리에서 반올림) 결과2: 123.46 (소수점 세 번째 자리에서 반올림) 결과3: 100 (십의 자리에서 반올림) */ SELECT TRUNC(123.456) 결과1, TRUNC(123.456, 2) 결과2, TRUNC(123.456, -2) 결과3 FROM dual; /* 결과1: 123 (정수자리에서 버림) 결과2: 123.45 (소수점 두 번째 자리에서 버림) 결과3: 100 (십의 자리에서 버림) */
Comments