[SQL] Function

aljongjong·2021년 12월 14일
0

학원 복습일지

목록 보기
26/84

<함수>

단일행 함수: N개의 값을 읽어서 N개의 결과를 리턴한다. (매 행마다 함수 실행 -> 결과 반환)

그룹 함수: N개의 값을 읽어서 1개의 결과를 리턴한다. (하나의 그룹별로 함수 실행 -> 결과 반환)

- SELECT 절에 단일행 함수와 그룹 함수를 함께 사용하지 못한다. (결과 행의 개수가 다르기 때문에)

- 함수를 기술할 수 있는 위치는 SELECT, WHERE, ORDER BY, GROUP BY, HAVING 절에 기술할 수 있다.

1. 문자 관련 함수

LENGTH(컬럼 | 문자값) -> 글자 수 반환
LENGTHB(컬럼 | 문자값) -> 글자의 바이트 수 반환
*한글 3byte, 영어/숫자/특수문자 1byte

INSTR(컬럼 |'문자값', '문자'[, POSITION[, OCCURRENCE]])

  • 지정한 위치부터 지정된 숫자 번째로 나타나는 문자의 시작 위치를 반환한다.

LPAD/RPAD(컬럼 |'문자값', 길이(바이트)[, '덧붙이려고 하는 문자'])

  • 제시된 컬럼 | '문자값'에 임의의 문자를 왼쪽 또는 오른쪽에 덧붙여 최종 N길이 만큼의 문자열을 반환한다.
    *덧붙이려는 문자값을 안 주면, 공백이 default
  • 문자에 대해 통일감 있게 표시하고자 할 때 사용한다.

LTRIM/RTRIM(컬럼|'문자값'[, '제거하고자 하는 문자'])

  • 문자열의 왼쪽 혹은 오른쪽에서 제거하고자 하는 문자들을 찾아서 제거한 결과를 반환한다.
  • 제거하고자 하는 문자값을 생략 시 기본값으로 공백을 제거한다.

TRIM([[LEADING|TRAILING|BOTH] '제거하고자 하는 문자값' FROM] 컬럼|'문자값')

  • 문자값 앞/뒤/양쪽에 있는 지정한 문자를 제거한 나머지를 반환한다.
  • 제거하고자하는 문자값을 생략 시 기본적으로 양쪽에 있는 공백을 제거한다.

SUBSTR(컬럼|'문자값', POSITION[, LENGTH])

  • 문자데이터에서 지정한 위치부터 지정한 개수만큼의 문자열을 추출해서 반환한다.

LOWER / UPPER / INITCAP(컬럼|'문자값')

  • LOWER: 모두 소문자로 변경한다.
  • UPPER: 모두 대문자로 변경한다.
  • INITCAP: 단어 앞 글자마다 대문자로 변경한다.

CONCAT(컬럼|'문자값', 컬럼|'문자값')

  • 문자열 두 개를 전달 받아서 하나로 합친 후 결과를 반환한다.


REPLACE(컬럼|'문자값', 변경하려고 하는 문자, 변경하고자 하는 문자)

  • 컬럼 또는 문자값에서 "변경하려고 하는 문자"를 "변경하고자 하는 문자"로 변경해서 반환한다.


2. 숫자 관련 함수

ABS(NUMER)

  • 절대값(absolute value)을 구하는 함수

MOD(NUMBER, NUMBER)

  • 두 수를 나눈 후 나머지를 반환해 주는 함수 (자바의 % 연산과 동일하다.)
    *오라클에선 % 연산자 형태의 나머지 연산자를 제공하지 않고 함수 형태만 제공한다.

ROUND(NUMBER[, 위치])

  • 위치를 지정하여 반올림해주는 함수
  • 위치: 기본값 0(.), 양수(소수점 기준으로 오른쪽)와 음수(소수점 기준으로 왼쪽)로 입력 가능수


CEIL(NUMBER)

  • 소수점을 기준으로 올림해주는 함수

FLOOR(NUMBER)

  • 소수점 기준으로 버림하는 함수

TRUNC(NUMBER[, 위치])

  • 위치를 지정하여 버림이 가능한 함
  • 위치: 기본값 0(.), 양수(소수점 기준으로 오른쪽)와 음수(소수점 기준으로 왼쪽)로 입력 가능



3. 날짜 관련 함수

SYSDATE

  • 시스템의 현재 날짜와 시간을 반환한다.

MONTHS_BETWEEN(DATE1, DATE2)

  • 입력 받은 두 날짜 사이의 개월 수를 반환한다.
  • 결과값은 NUMBER 타입이다.

ADD_MONTHS(DATE, NUMBER)

  • 특정 날짜에 입력받은 숫자만큼의 개월 수를 더한 날짜를 리턴한다.
  • 결과값 DATE 타입이다.

NEXT_DAY(DATE, 요일(문자|숫자))

  • 특정 날짜에서 구하려는 요일의 가장 가까운 날짜를 리턴한다.
  • 결과값은 DATE 타입이다.
    *요일(숫자) -> 1 = 일요일, 2 = 월요일, 3 = 화요일, 4 = 수요일, 5 = 목요일, 6 = 금요일, 7 = 토요일

LAST_DAY(DATE)

  • 해당 월의 마지막 날짜를 반환한다.
  • 결과값은 DATE 타입이다.

EXTRACT(YEAR|MONTH|DAY FROM DATE)

  • 특정 날짜에서 연도, 월, 일 정보를 추출해서 반환한다.
    YEAR: 연도만 추출
    MONTH: 월만 추출
    DAY: 일만 추출
  • 결과값은 NUMBER 타입이다.

4. 형변환 함수

TO_CHAR(날짜 | 숫자[, 포맷])

  • 날짜 또는 숫자 타입의 데이터를 문자 타입의 데이터로 변환하여 반환한다.
  • 결과값은 CHARACTER 타입이다.

TO_DATE(숫자|문자[, 포맷])

  • 숫자 또는 문자형 데이터를 날짜 타입으로 변환해서 반환한다.
  • 결과값은 DATE 타입이다.

TO_NUMBER('문자값'[, 포맷])

  • 문자 타입의 데이터를 숫자 타입의 데이터로 변환해서 반환한다.
  • 결과값은 NUMBER 타입이다.

5. Null 처리 함수

NVL(컬럼, 컬럼값이 NULL일 경우 반환할 값)

  • NULL로 되어있는 컬럼의 값을 인자로 지정한 값으로 변경하여 반환한다.

NVL2(컬럼, 변경할 값1, 변경할 값2)

  • 컬럼 값이 NULL이 아니면 변경할 값1, 컬럼 값이 NULL이면 변경할 값2로 변경하여 반환한다.

NULLIF(비교대상 1, 비교대상 2)

  • 두 개의 값이 동일하면 NULL 반환, 두 개의 값이 동일하지 않으면 비교대상 1을 반환한다.

6. 선택 함수

DECODE(컬럼 | 계산식, 조건값1, 결과값1, 조건값2, 결과값2,..., 결과값)

  • 비교하고자 하는 값이 조건값과 일치할 경우 그에 해당하는 결과값을 반환해 주는 함수이다.

CASE

CASE WHEN 조건식1 THEN 결과값1
     WHEN 조건식2 THEN 결과값2
     ...
     ELSE 결과값N
END



7. 그룹 함수

SUM(NUMBER)

  • 해당 컬럼 값들의 총 합계를 반환한다.

AVG(NUMBER)

  • 해당 컬럼 값들의 평균을 구해서 반환한다.

MIN / MAX(모든 타입 컬럼)

  • MIN: 해당 컬럼 값들 중에 가장 작은 값을 반환한다.
  • MAX: 해당 컬럼 값들 중에 가장 큰 값을 반환한다.

COUNT(* | 컬럼명 | DISTINCT 컬럼명)

  • 컬럼 또는 행의 개수를 세서 반환하는 함수이다.
  • COUNT(*): 조회 결과에 해당하는 모든 행의 개수를 반환한다.
  • COUNT(컬럼명): 제시한 컬럼 값이 NULL이 아닌 행의 개수를 반환한다.
  • COUNT(DISTINCT 컬럼명): 해당 컬럼 값의 중복을 제거한 행의 개수를 반환한다.

0개의 댓글