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자리에서 잘라 버림 |
날짜형 함수 #
함수명 |
기능 |
SYSDATE |
현재 날짜와 시각 출력 |
TO_NUMBER(TO_CHAR(날짜, 'YYYYMMDD') |
날짜 데이터에서 연월일 출력 |
변환형 함수 #
- 문자, 숫자, 날짜형 값의 데이터 타입을 변환한다.
함수명 |
기능 |
to_number(값) |
값을 숫자로 변환하여 return |
TO_CHAR(숫자 혹은 날짜 [, format]) |
숫자나 날짜를 주어진 format 형태 문자열 타입으로 변환 |
TO_DATE(문자 [, format]) |
문자를 주어진 format 형태 날짜 타입으로 변환 |
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;