[오라클/ORACLE] 단일행 함수 ROUND | ABS | UPPER | SUBSTR
- Database
- 2021. 5. 31.
내장함수
SQL에서는 함수를 사용한다. 오라클 같은 DBMS가 기본적으로 제공하는 함수를 내장함수라고 한다. 반면 사용자가 필요에 따라 직접 만드는 건 사용자 정의 함수라 불린다.
내장함수는 또다시
- 단일행함수
- 집계함수
- 분석함수
로 나뉜다. 단일행 함수는 한 줄의 레코드를 처리해주는 함수로 이해하면 된다. 반면 집계함수와 분석함수는 받아온 레코드를 하나의 그룹으로 인식하고 하나의 결과를 도출한다. 간단한 예로 평균을 내는 집계함수 AVG
는 여러 레코드 값을 통해 하나의 값을 도출한다.
단일행 함수는 숫자, 문자, 날짜, 변환, NULL 등으로 또 한번 세분화된다. 그런데 굳이 이런 구분을 할 필요는 못 느끼겠다. 때문에 이 글에서 소개하는 ROUND
, ABS
, UPPER
, SUBSTR
은 단일행 함수에 속한다는 공통점이 있지만 그냥 여러 단일행 함수 중 일부일 뿐이다. 그냥 비교적 사용성이 높아 보이는 정도?
ROUND
반올림의 기능을 수행하는 ROUND()
함수는 DATE 값을 반환할 수 있다. 때문에 TO_DATE
, TO_CHAR
등과 함께 반올림한 날짜 값을 반환한다.
예를 들어
'31-05-2021 22:30:15'
이러한 날짜-시간 값을 가지고 있다고 가정하고, 이를 DATE 타입으로 바꾸려면 TO-DATE()
함수를 사용한다.
TO_DATE( '31-05-2021 22:30:15', 'DD-MM-YYYY HH24:MI:SS')
ROUND
함수를 사용하면 해당 날짜-시간에서 가장 가까운 날을 설정할 수 있다.
SELECT
TO_CHAR(
ROUND( TO_DATE( '31-05-2021 22:30:15', 'DD-MM-YYYY HH24:MI:SS' ) ),
'DD-MM-YYYY HH24:MI:SS' ) rounded_result
FROM
dual;
-- dual 테이블은 오라클 자체에서 제공하는 테이블로 계산된 결과값을 확인할 때 사용됨
출력값
ABS
abs()
는 절대값을 반환한다. 사용법은 간단하다.
select abs(-77), abs(+77) from dual;
출력값
UPPER
UPPER()
는 받아온 영문 문자열을 대문자로 바꾼다.
SELECT
UPPER( 'string functions' )
FROM
dual;
이 함수는 통상 단어의 첫 스펠링은 대문자로 기록되는 알파벳의 특성에 따라 이용되기도 한다.
SUBSTR
SUBSTR()
은 원하는 문자열 일부를 추출한다.
SUBSTR('문자열', 시작 인덱스, 끝 인덱스)
SELECT
SUBSTR( 'Oracle Substring', 1, 6 )
FROM
dual;
출력값
주의해야 할 점은 데이터베이스에서 인덱스는 1부터 시작한다는 점이다. 'Oracle'에서 'O'는 1번째 인덱스다. 0부터 시작하는 자바와는 차이가 있다.
'Database' 카테고리의 다른 글
[오라클/ORACLE] 시퀀스(SEQUENCE) - NEXTVAL | CURRVAL | 초기화 (0) | 2021.06.01 |
---|---|
[오라클/ORACLE] 데이터 잘라서 보는 ROWNUM (0) | 2021.06.01 |
[오라클/ORACLE] 데이터 조작어(DCL) - INSERT, DELETE, UPDATE (0) | 2021.05.29 |
[오라클/ORACLE] 데이터 정의어(DDL) - CREATE, ALTER, DROP (0) | 2021.05.29 |
[데이터베이스/DB] 선택적 조인, 외부 조인(OUTER JOIN) 사용법 (0) | 2021.05.28 |