함수 (Oracle)

왱구·2023년 12월 25일

DB

목록 보기
4/5

1. 함수

  • 자주 사용되는 기능을 미리 만들어 놓고 필요할 때마다 사용하는 개념
  • DBMS에서는 주로 사용되는 문자, 숫자, 날짜 등의 다양한 기능과 데이터 타입을 변환하는 함수들을 제공
타입데이터 타입설명
문자CHAR(n)n크기의 고정 길이 문자 형식 저장 (최대 2,000 byte)
문자VARCHAR2(n)n크기의 가변 길이 문자 형식 저장 (최대 4,000 byte)
숫자NUMBER(p, s)숫자 형식 저장(p: 정수 자리수, s: 소수 자리수)
날짜DATE날짜 형식 저장 (9999년 12월 31일까지 저장 가능)

1) 단일행 함수

  • 데이터 값 계산 및 조작
  • 행별로 하나의 결과를 반환
  • SELECT, WHERE, ORDER BY 절에서 사용
  • 중첩 함수로 사용 가능 (가장 안쪽 단계에서 바깥쪽 단계순으로 진행)
  • 문자, 숫자, 날짜, 변환, 일반 함수 등이 존재


2) 다중행 함수(그룹 함수, 집계 함수)

  • 행의 그룹 계산 및 요약
  • 여러 행이 입력되고, 결과는 하나의 행씩 반환
  • GUOUP BY, HAVING 절 사용

2. 문자함수

함수설명결과
LOWER()소문자로 변환LOWER('SUAN')suan
UPPER()대문자로 변환UPPER('suan')SUAN
INITCAP()첫 문자만 대문자로 변환INITCAP('suan')Suan
SUBSTR()일부 문자열만 추출SUBSTR('Suan', 1, 2)Su
REPLACE()특정 문자열을 찾아 바꾸기REPLACE('Suan', 'u', 'e')Suan
CONCAT()두 문자열 연결CONCAT('Suan', 'Lee')SuanLee
LENGTH()문자열 길이LENGTH('Suan')4
INSTR()문자열 위치INSTR('Suan', 'a')3
LPAD()왼쪽부터 특정 문자로 채움LPAD('Suan', 7, "*")***Suan
RPAD()오른쪽부터 특정 문자로 채움RPAD('Suan', 7, "*")Suan***
LTRIM()왼쪽 특정 문자를 지움LTRIM('Suan', 'Su')an
RTRIM()오른쪽 특정 문자를 지움RTRIM('Suan', 'an')Su

3. 숫자함수

함수설명결과
CEIL()정수 올림CEIL(12.345)13
FLOOR()정수 내림FLOOR(12.345)12
ROUND()반올림ROUND(12.345, 0)12
TRUNC()절삭TRUNC(12.345, 1)12.3
MOD()나눈 나머지MOD(12, 5)2
SIGN()양수, 음수, 0구분SIGN(12)1
POWER()거듭제곱POWER(3, 3)27
SQRT()제곱근SQRT(4)2

4. 날짜함수

함수설명결과
MONTH_BETWEEN()두 날짜 사이의 개월수 계산MONTHS_BETWEEN(SYSDATE, hire_date)218.683
ADD_MONTHS()날짜에 지정한 개월수를 더함ADD_MONTHS(hire_date, 3)03/09/17
NEXT_DAY()돌아오는 요일의 날짜 반환NEXT_DAY(hire_date, 3)03/06/24
LAST_DAY()월의 마지막 날짜를 계산LAST_DAY(hire_date)03/06/30
ROUND()날짜를 가장 가까운 연도나 월로 반올림ROUND(hire_date, 'YEAR')03/01/01
TRUNC()날짜를 가장 가까운 연도 또는 월로 절삭TRUNC(hire_date, ‘MONTH’)03/06/01

5. 변환함수

1) 자동(암묵적) 변환


2) 수동(명시적) 변환

함수설명
TO_CHAR()숫자와 날짜 데이터를 문자 데이터로 변환
TO_NUMBER()문자 데이터를 숫자 데이터로 변환
TO_DATE()문자 데이터를 날짜 데이터로 변환

6. 집계함수

함수설명
COUNT()행의 개수COUNT(salary)
SUM()합계SUM(salary)
AVG()평균AVG(salary)
MIN()최솟값MIN(salary)
MAX()최댓값MAX(salary)
STDDEV()표준편차STDDEV(salary)
VARIANCE()분산VARIANCE(salary)
profile
늦깎이 애아빠 개발지망생

0개의 댓글