Skip to content

sql Function #
Find similar titles

You are seeing an old version of the page. Go to latest version

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 내장함수의 종류 #

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

  2. 숫자형 함수 : 숫자를 입력하면 숫자 값을 반환한다. | 함수명 | 기능 | |--------|--------| |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자리에서 잘라 버림 |

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

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

  5. 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 |

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

  7. 기타 | 함수명 | 기능 | |--------|--------| |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