예제 데이터





함수(Function)
특정 작업을 수행하는 명령어
내장 함수
- SUM
- COUNT
- AVG
- MIN
- MAX 등등
사용자 정의 함수
단일 행 함수
Single-Row Functions
- 문자형 함수, 숫자형 함수, 날짜형 함수
- 제어 함수, 변환 함수, NULL 관련함수
- UPPER, LOWER, CONCAT, SUBSTRING 등
다중 행 함수
Multi-Row Functions
- 보통 GROUP BY 절과 함께 사용
- SUM, AVG, COUNT, MIN, MAX, ROW_NUMBER, RANK 등
각 행(Row)에 대해 개별적으로 작용하고 그 결과를 반환함
함수 중첩이 가능함
SELECT, WHERE, ORDER BY 절에 사용 가능함
| 종류 | 개요 | 주요 함수 |
|---|---|---|
| 문자형 함수 | 문자열 처리 | LOWER, UPPER, ASCII, CHR, CONCAT, SUBSTR, LENGTH, LTRIM, RTRIM, TRIM |
| 숫자형 함수 | 숫자형 값 처리 | ABS, SIGN, MOD, CEIL, FLOOR, ROUND, TRUNC, SIN, COS, TAN, EXP, POWER, SQRT, LOG, LN |
| 변환형 함수 | 문자, 숫자, DATE형 값으로의 타입 변환 | TO_CHAR, TO_NUMBER, TO_DATE |
| 날짜형 함수 | 날짜(Date) 처리 | SYSDATE, EXTRACT, TO_DATE, ADD_MONTHS |
| 제어 함수 | 조건/논리에 따른 처리 | CASE, DECODE |
| NULL 관련 함수 | NULL 값 처리 | NVL, NULLIF, COALESCE |
SELECT FUNCTION_NAME FROM DUAL;





LTRIM(문자열) / LTRIM(문자열, 지정문자)
- 문자열의 왼쪽부터 시작해서, 다른 문자를 만나기 전까지 지정 문자를 제거
- 지정 문자가 생략되면 공백(' ') 이 디폴트 값으로 처리됨
- 예)
LTRIM(' aaabaaa')→'aaabaaa'- 예)
LTRIM('aaaabaaa', 'a')→'baaa'
RTRIM(문자열) / RTRIM(문자열, 지정문자)
- 문자열의 오른쪽부터 시작해서, 다른 문자를 만나기 전까지 지정 문자를 제거
- 지정 문자가 생략되면 공백이 디폴트 값
- 예)
RTRIM('aaabaaa ')→'aaabaaa'- 예)
RTRIM('aaabaaa', 'a')→'aaab'
TRIM(문자열) / TRIM(지정문자 FROM 문자열)
- 문자열의 양쪽에서 지정 문자를 제거함
- 지정 문자가 생략되면 공백을 제거
- 예)
TRIM(' aaaaabaa ')→'aaaaabaa'- 예)
TRIM('a' FROM 'aaabaaa')→'b'




| 함수 구분 | 함수 사용 예 |
|---|---|
| ABS(숫자) | ABS(-7), ABS(7) |
| SIGN(숫자) | SIGN(-20), SIGN(0), SIGN(10) |
| MOD(숫자1, 숫자2) | MOD(17, 3) |
| CEIL(숫자) | CEIL(18.123), CEIL(-18.123) |
| FLOOR(숫자) | FLOOR(18.123), FLOOR(-18.123) |
| ROUND(숫자, m) | ROUND(18.5235, 3) |
| ROUND(숫자) | ROUND(18.5235) |
| ROUND(숫자, m) | ROUND(18.5235, -1) |
| TRUNC(숫자, m) | TRUNC(18.5235, 3) |
| TRUNC(숫자) | TRUNC(18.5235) |

명시적(Explicit) 데이터 타입 변환
- 함수를 사용하여 명시적으로 데이터 타입을 변환
암시적(Implicit) 데이터 타입 변환
- 시스템이 자동으로 데이터 타입 변환
- 예) 문자열을 숫자로 변환
- 성능 저하 및 에러 발생의 가능성 존재

TO_CHAR(숫자 | 날짜) / TO_CHAR(숫자 | 날짜, FORMAT)
- 숫자나 날짜를 문자열로 변환
- 날짜일 경우
FORMAT지정으로 다양한 형태로 출력 가능- 예)
SELECT S_BIRTH, TO_CHAR(S_BIRTH, 'YYYY/MM/DD') AS 타입1, TO_CHAR(S_BIRTH, 'YYYY.MM.DD.HH24.MI.SS') AS 타입2, TO_CHAR(S_BIRTH) AS 타입3 FROM STUDENT;![]()
TO_NUMBER(문자열)
- 문자열을 숫자로 변환
- 문자열끼리 연산할 때 자동 변환이 일어날 수도 있지만, 명시적으로 TO_NUMBER() 사용 권장
- 예)
SELECT '1' + '1' AS TEST1, -- 자동 형변환 TO_NUMBER('1') + TO_NUMBER('1') AS TEST2 -- 명시적 형변환 FROM DUAL;
TO_DATE(문자열) / TO_DATE(문자열, FORMAT)
- 문자열을 날짜(DATE) 형식으로 변환함
- 날짜 연산(EXTRACT, MONTHS_BETWEEN 등)을 하려면 반드시 날짜형으로 변환해야 함
- FORMAT은 문자열의 날짜 형식과 정확히 일치해야 함
- 예):
SELECT TO_DATE('2025-12-31', 'YYYY-MM-DD') FROM DUAL;
EXTRACT('YEAR' | 'MONTH' | 'DAY' FROM 날짜)
날짜 데이터에서 년/월/일 정보 추출
- 예)
SELECT S_BIRTH, EXTRACT(YEAR FROM S_BIRTH) AS 년, EXTRACT(MONTH FROM S_BIRTH) AS 월, EXTRACT(DAY FROM S_BIRTH) AS 일 FROM STUDENT;
TRUNC(날짜, 옵션)
날짜를 특정 기준에 따라 잘라내는 함수
옵션은'DD'(일),'MM'(월),'YY'(연) 등이 있음
- 예)
SELECT S_BIRTH, TRUNC(S_BIRTH, 'DD') AS 일기준, TRUNC(S_BIRTH, 'MM') AS 월기준, TRUNC(S_BIRTH, 'YY') AS 년기준 FROM STUDENT;


표현식이지만 함수의 성격을 갖고 있음
예) S_SCORE 가 90 이상이면 'BEST' 표시, 그 외에는 '***' 표시


CASE 표현식의 중첩

Oracle 에서만 사용되는 함수
DECOE(표현식, 기준값1, 출력값1 [기준값2, 출력값2 ... 디폴트 값]

NULL
비어있는 값
- 공백과는 다른 의미
- NULL을 포함하는 모든 산술 연산의 값은 NULL
NULL과 공집합은 다른 의미

NVL(인수1, 인수2)
인수 1이 NULL일 경우 인수 2의 값을 반환, NULL이 아니면 인수1을 반환
- NULL값을 특정 값으로 변환할 때 사용
- S_ENGNAME이 없는 경우는 '없음으로 출력하는 예
NULLIF(인수1, 인수2)
인수1과 인수2가 같으면 NULL을, 같지않으면 인수 1의 값을 반환
- 특정 값을 NULL로 변환할 때 사용
- S_NAME과 S_ENGNAME을 출력하되, S_ENGNAME이 'RUBY'인 경우는 NULL로 출력하는 예
COALESCE(인수1, 인수2, ..)
- 인수들에서 NULL이 아닌 최초의 표현식을 반환
- 모든 표현식이 NULL이라면 NULL을 반환
- 임의의 개수의 표현식에서 NULL이 아닌 최초의 표현식을 반환할 때 사용

