[오라클/ORACLE] 단일행 함수 ROUND | ABS | UPPER | SUBSTR

내장함수

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부터 시작하는 자바와는 차이가 있다.


예제 출처: 오라클 튜토리얼

반응형

댓글

Designed by JB FACTORY