Skip to content

sql Function #
Find similar titles

Structured data

Category
Database

함수(Function)란? #

데이터베이스 오브젝트로 정의해서 만들어 둔 후에 필요할 때마다 호출해서 사용할 수 있도록 해둔 것. 함수는 다양한 기준으로 분류할 수 있는데, 벤더에서 제공하는 함수인 내장함수(Built-in Function)와 사용자가 정의할 수 있는 함수(User Defined Function)로 나눌 수 있다.

내장함수 #

  • 데이터베이스에서 자체 제공되는 함수로 정식명칭은 SQL 함수
  • 내장함수는 SQL을 더욱 강력하게 해주고 데이터 값을 간편하게 조작하는 데 사용됨.
  • 함수의 입력값에 따라 단일행 값이 입력되는 단일행 함수(Single-Row Function)와 여러 행의 값이 입력되는 다중행 함수(Multi-Row Function)로 나눌 수 있음.
  • 단일행 함수는 처리하는 데이터의 형식에 따라서 문자형, 숫자형, 날짜형, 변환형, NULL 관련 함수로 나눌 수 있고, 다중행 함수는 집계 함수(Aggregate Function), 그룹 함수(Group Function), 윈도우 함수(Window Function)로 나눌 수 있음.

Oracle 내장함수의 종류 #

문자형 함수 #

  • 문자를 입력하면 문자나 숫자 값을 반환한다.
함수명 기능
LOWER(문자) 알파벳 문자를 소문자로 바꾸어 준다.
UPPER(문자) 알파벳 문자를 대문자로 바꾸어 준다.
ascii(문자) 해당 문자나 숫자를 ASCII 코드번호로 return
CONCAT(문자1, 문자2) 문자1과 문자2를 연결
SUBSTR(문자, m[, n]) 문자 중 m 위치에서 n개의 문자 길이에 해당하는 문자 return. n 생략 가능

숫자형 함수 #

  • 숫자를 입력하면 숫자 값을 반환한다.
함수명 기능
abs(값) 절대 값을 return
MOD(숫자1, 숫자2) 숫자1을 숫자2로 나눈 나머지 값 return
Ceil(값) 소수점 이상을 절사하여 return
Sign(값) 값이 +면 1, -면 -1을, 0면 0을 return
Floor(값) 소수점 이하를 절사하여 return
ROUND(숫자 [, m]) 숫자를 소수점 m자리에서 반올림하여 return. m 생략되면 default 값은 0
TRUNC(숫자 [, m]) 숫자를 소수 m자리에서 잘라 버림

날짜형 함수 #

  • DATE 타입의 값을 연산한다.
함수명 기능
SYSDATE 현재 날짜와 시각 출력
TO_NUMBER(TO_CHAR(날짜, 'YYYYMMDD') 날짜 데이터에서 연월일 출력

변환형 함수 #

  • 문자, 숫자, 날짜형 값의 데이터 타입을 변환한다.
함수명 기능
to_number(값) 값을 숫자로 변환하여 return
TO_CHAR(숫자 혹은 날짜 [, format]) 숫자나 날짜를 주어진 format 형태 문자열 타입으로 변환
TO_DATE(문자 [, format]) 문자를 주어진 format 형태 날짜 타입으로 변환

NULL 관련 함수 #

  • NULL을 처리하기 위한 함수
함수명 기능
NVL(표현식1, 표현식2) 표현식1의 결과값이 NULL이면 표현식2의 값을 출력. 단, 표현식1과 결과 데이터 타입 같아야 함
NULLIF(표현식1, 표현식2) 표현식1이 표현식2와 같으면 NULL, 같지 않으면 표현식 1 return
COALESCE(표현식1, 표현식2, ...) n개의 표현식에서 NULL이 아닌 최초의 표현식을 나타냄. 모든 표현식이 NULL이면 NULL return

집계함수(Aggregate Function) #

  • 여러 행의 그룹이 모여 그룹당 단 하나의 결과를 돌려주는 함수
함수명 기능
count(값) 값의 건수를 return
COUNT(*) NULL 값을 포함한 행의 수 return
SUM(표현식) 표현식의 NULL 값을 제외한 합계 출력
AVG(표현식) 표현식의 NULL 값을 제외한 평균 출력
min(값) 가장 작은 값을 return
max(값) 가장 큰 값을 return

기타 #

함수명 기능
Decode If .. Then .. Else를 처리
Greatest(값,값,값...) 값 중 가장 큰 것을 return(숫자, 문자, 날짜 모두 가능)
Least(값,값,값...) 값 중 가장 작은 것을 return(숫자, 문자, 날짜 모두 가능)
rpad(값,길이,문자) 값 내의 데이터 길이가 주어진 길이 이하면 우측에 문자를 채워 고정길이를 return
lpad(값,길이,문자) 값 내의 데이터 길이가 주어진 길이 이하면 좌측에 문자를 채워 고정길이를 return
replace(값,문자1,문자2) 값=문자1면 문자2로 교체하여 return

사용자 정의 함수 #

  • 개발자나 DBA 등 오라클 사용자들이 필요에 따라 정의한 함수

Oracle 사용예제 #

 CREATE OR REPLACE function CODA4.GET_RSRCH_TASK  return TASK_TYPE_TBL pipelined

    is
        v_obj TASK_TYPE;
    begin
        for obj in

            (SELECT b.EXPC_EFFECT
                 ,b.RSRCH_CN
                 ,b.RSRCH_GOAL
                 ,b.RSRCH_TASK_ID

              FROM T_CODA_REF_TASK a
                 , T_CODA_RSRCH_TASK b
             WHERE a.REF_TASK_ID=b.REF_TASK_ID
            )
     loop
            v_obj:=TASK_TYPE(
            obj.EXPC_EFFECT
            ,obj.RSRCH_CN
            ,obj.RSRCH_GOAL
            ,obj.RSRCH_TASK_ID

            );
            pipe row(v_obj);
     end loop;
    end;
0.0.1_20210630_7_v33