230804 TIL Chapter 18. DB 함수

최규연·2023년 8월 4일
0

TIL

목록 보기
18/57

DB 2번째 시간!
함수!!

함수

함수란 컬럼의 값을 읽어서 연산한 결과를 반환하는 것으로
단일 행 함수는 N개의 값을 읽어서 N개의 결과를 반환
그룹 함수는 N개의 값을 읽어서 1개의 결과를 반환한다. (합계, 평균, 최대, 최소)

함수는 SELECT문의 SELECT절, WHERE절, ORDER BY절, GROUP BY절, HAVING절에 사용가능하다.

문자 처리 함수

LENGTH

LENGTH (컬럼명 | 문자열) : 길이 반환

INSTR

INSTR(컬럼명 | 문자열, '찾을 문자열' [, 찾기 시작할 위치 [, 순번] ] )
지정한 위치부터 지정한 순번째로 검색되는 문자의 위치를 반환

SUBSTR

SUBSTR('문자열' | 컬럼명, 잘라내기 시작할 위치 [, 잘라낼 길이])
컬럼이나 문자열에서 지정한 위치부터 지정된 길이만큼 문자열을 잘라내서 반환
-- 잘라낼 길이 생략시 끝까지 잘라냄

TRIM

TRIM( [ [옵션] '문자열' | 컬럼명 FROM ] '문자열' | 컬럼명 )
주어진 컬럼이나 문자열의 앞, 뒤, 양쪽에 있는 지정된 문자를 제거
-- 양쪽 공백 제거에 많이 사용한다.

  • 옵션
  1. LEADING(앞쪽)
  2. TRAILING(뒤쪽)
  3. BOTH(양쪽, 기본값)

숫자 처리 함수

ABS

ABS(숫자 | 컬럼명) : 절대값

MOD

MOD(숫자 | 컬럼명, 숫자 | 컬럼명) : 나머지 값 반환

ROUND

ROUND(숫자 | 컬럼명 [, 소수점 위치] ) : 반올림

CEIL, FLOOR

CEIL(숫자 | 컬럼명) : 올림
FLOOR(숫자 | 컬럼명) : 내림
--> 둘 다 소수점 첫째 자리에서 올림/내림 처리

TRUNC

TRUNC(숫자 | 컬럼명 [, 위치] ) : 특정 위치 아래를 첨삭(삭제)


날짜(DATE) 처리 함수

SYSDATE

시스템에 현재 시간 (년, 월, 일, 시, 분, 초)을 반환

SYSTIMESTAMP

SYSDATE + MS 단위 추가 / 특정 시간을 나타내거나 기록하기 위한 문자열

MONTHS_BETWEEN

MONTHS_BETWEEN(날짜, 날짜) : 두 날짜의 개월 수 차이 반환

ADD_MONTHS

ADD_MONTHS(날짜, 숫자) : 날짜에 숫자만큼의 개월 수를 더함. (음수도 가능)

LAST_DAY

LAST_DAY(날짜) : 해당 달의 마지막 날짜를 구한다.

EXTRACT

EXTRACT(YEAR FROM 날짜) : 년도만 추출
EXTRACT(MONTH FROM 날짜) : 월만 추출
EXTRACT(DAY FROM 날짜) : 일만 추출


형 변환 함수

문자열(CHAR), 숫자(NUMBER), 날짜(DATE) 끼리는 형변환 가능

문자열 변환 TO_CHAR

TO_CHAR(날짜, [포맷]) : 날짜형 데이터를 문자형 데이터로 변경
TO_CHAR(숫자, [포맷]) : 숫자형 데이터를 문자형 데이터로 변경

<숫자 변환 시 포맷 패턴>

  • 9 : 숫자 한칸을 의미, 여러개 작성시 오른쪽 정렬
  • 0 : 숫자 한칸을 의미, 여러개 작성시 오른쪽 정렬 + 빈칸 0 추가
  • L : 현재 DB에 설정된 나라의 화폐 기호

< 날짜 변환 시 포맷 패턴 >

  • YYYY : 년도 / YY : 년도(짧게)
  • MM : 월
  • DD : 일
  • AM 또는 PM : 오전 / 오후 표시
  • HH : 시간 / HH24 : 24시간 표기법
  • MI : 분 / SS : 초
  • DAY : 요일(전체) / DY : 요일(요일명만 표시)

날짜로 변환 TO_DATE

TO_DATE(문자형 데이터, [포맷]) : 문자형 데이터를 날짜로 변경
TO_DATE(숫자형 데이터, [포맷]) : 숫자형 데이터를 날짜로 변경
--> 지정된 포맷으로 날짜를 인식함

  • Y 패턴 : 현재 세기(21세기 == 20XX년 == 2000년대)
  • R 패턴 : 1세기 기준으로 절반(50년) 이상인 경우 이전세기(1900년대)
    -- 절반(50년) 미만인 경우 현재 세기(2000년대)

숫자 형변환

TO_NUMBER

TO_NUMBER(문자데이터, [포맷]) : 문자형 데이터를 숫자 데이터로 변경

NULL 처리 함수

NVL(컬럼명, 컬럼값이 NULL일때 바꿀 값) : NULL인 컬럼값을 다른 값으로 변경

NULL과 산술연산을 진행하면 결과는 무조건 NULL

NVL2(컬럼명, 바꿀값1, 바꿀값2)
해당 컬럼의 값이 있으면 바꿀값1로 변경
해당 컬럼이 NULL이면 바꿀값2로 변경


선택 함수

여러가지 경우에 따라 알맞은 결과를 선택할 수 있음.

DECODE

DECODE(계산식 | 컬럼명, 조건값1, 선택값1, 조건값2, 선택값2, ...., 아무것도 일치하지 않을때)
비교하고자 하는 값 또는 컬럼이 조건식과 같으면 결과값 반환
일치하는 값을 확인(자바느이 SWITCH와 비슷함)

CASE

CASE WHEN 조건식 THEN 결과값
		WHEN 조건식 THEN 결과값
		ELSE 결과값
END

비교하고자 하는 값 또는 컬럼이 조건식과 같으면 결과값 반환
조건은 범위값 가능


그룹 함수

SUM

SUM(숫자가 기록된 컬럼명) : 합계

AVG

AVG(숫자가 기록된 컬럼명) : 평균

MIN,MAX

MIN(컬럼명) : 최소값
MAX(컬럼명) : 최대값
--> 타입 제한 없음(숫자: 대/소, 날짜: 과거/미래, 문자열: 문자 순서)

COUNT

COUNT( | 컬럼명) : 행의 개수를 헤아려서 리턴
COUNT([DISTINCT] 컬럼명) : 중복을 제거한 행 개수를 헤아려서 리턴
COUNT(
) : NULL을 포함한 전체 행 개수를 리턴
COUNT(컬럼명) : NULL을 제외한 실제 값이 기록된 행 개수를 리턴함

0개의 댓글