[ 데이터베이스]FUNCTION - 1
FUNCTION
입력 값이 많아도 출력은 오직 하나, M:1 관계
각각의 행에 대한 조작 결과리턴, SELECT, WHERE, ORDER BY 절에 단일 함수 사용 가능
특별한 제약이 없다면 함수의 인자로 함수 사용하는 중첩가능
함수의 종류
벤더(판매자)에서 제공하는 내장함수 (BUILT-IN FUNCTION)
사용자가 정의할 수 있는 함수 (USER DEFINED FUNCTION)
단일행 함수
다중행 함수 - 집계함수, 그룹함수, 윈도 함수
종류 | 내용 | 함수 예시 |
문자형 함수 | 문자를 입력하면 문자나 숫자 값을 반환 | LOWER, UPPER, CONCAT, SUBSTR/SUBSTRING, LENGTH/LEN, LTRIM, RTRIM, TRIM, ASCII |
숫자형 함수 | 숫자를 입력하면 숫자 값을 반환 | ABS, MOD, ROUND, TRUNC, SIGN, CHR/CHAR, CEIL/CEILING, FLOOR,EXP, LOG, LN, POWER, SIN, COS, TAN |
날짜형 함수 | DATE 타입 값 연산 | SYSDATE/GETDATE, EXTRACT/DATEPART, TO_NUMBER(TO_CHAR(d, 'DD' | 'MM' | 'YY')) / DAY|MONTH| YEAR |
변환형 함수 | 문자, 숫자, 날짜형 값의 데이터 타입 변환 | TO_CHAR, TO_NUMBER, TO_DATE/ CAST, CONVERT |
NULL 관련 함수 | NULL 처리 하기 위한 함수 | NVL(오라클) / ISNULL(SQL) , NULLIF, COALESCE |
문자형 함수
LOWER (문자열) : 문자열의 알파벳 문자를 소문자로
UPPER (문자열) : 문자열의 알파벳 문자를 대문자로
ASCII (문자) : 문자나 숫자를 ASCII 코드 번호로
CHR/CHAR (ASCII번호) : ASCII 코드 번호를 문자나 숫자로
CONCAT (문자열 1, 문자열 2) : 문자열 1과 문자열 2를 연결한다. 연결 연산자 '||' (ORACLE)과 '+'(SQL)와 동일
SUBSTR/SUBSTRING (문자열, m [, n]) : 문자열 중 m위치에서 n개의 문자 길이에 해당하는 문자 반환, n 생략 마지막
LTRIM (문자열 [, 지정문자]) : 문자열 첫 문자부터 지정 문자가 나타나면 해당 문자 제거, 공백값 디폴트
RTRIM (문자열 [, 지정문자]) : 문자열 마지막 문자부터 지정 문자가 나타나면 해당 문자 제거, 공백값 디폴트
TRIM ([leading|trailing|both]) : 문자열 머리말, 꼬리말, 양쪽 지정 문자 제거, 가운데는 살려둠
LENGTH/LEN (문자열) : 문자열의 개수를 숫자값으로 돌려줌
ex) SELECT LENGTH('SQL Expert') FROM DUAL;
SELECT LEN('SQL Expert');
숫자형 함수
ABS (숫자) : 숫자의 절댓값 리턴
SIGN (숫자) : 숫자가 양수(1 출력) 인지, 음수(-1 출력) 인지, 0(0 출력) 인지 구별
MOD (숫자 1, 숫자 2) : 숫자 1을 숫자 2로 나누어 나머지 값 리턴
ROUND (숫자, [, M]) : 숫자 소수점 M자리에서 반올림 리턴, M 생략 디폴트 0
TRUNC (숫자, [, M]) : 숫자 소수 M자리 잘라서 버림, M 생량 디폴트 0
CEIL/CEILING (숫자) : 숫자보다 크거나 같은 최소 정수를 리턴
FLOOR (숫자) : 숫자보다 작거나 같은 최소 정수 리턴
EXP(), POWER() , SQRT(), LOG(), LN() : 숫자 지수, 거듭, 제곱근, 자연로그 값 리턴
SIN(), COS(), TAN() : 숫자의 삼각함숫값 리턴
날짜형 함수
ORACLE / SQL 구분
SYSDATE/ GETDATE() : 현재 날짜와 시각 출력
EXTRACT('YEAR' | 'MONTH' | 'DAY' from d) / DATEPART('YEAR' | 'MONTH' | 'DAY', d)
: 날짜 데이터에서 년/월/일 데이터 출력, 시간/분/초도 가능
TO_ NUMBER(TO_CHAR(d, 'YYYY')) / YEAR(d) : 날짜 데이터에서 년 데이터 출력, EXTRACT, DATEPART와 같은 기능
TO_ NUMBER(TO_CHAR(d, 'MM')) / MONTH(d) : 날짜 데이터에서 년 데이터 출력, EXTRACT, DATEPART와 같은 기능
TO_ NUMBER(TO_CHAR(d, 'DD')) / DAY(d) : 날짜 데이터에서 년 데이터 출력, EXTRACT, DATEPART와 같은 기능
날짜형 함수 연산
날짜 1 + 숫자 : 숫자만큼의 날수를 날짜에 더한다
날짜 1 - 숫자 : 숫자만큼의 날수를 날짜에서 뺀다
날짜 1 - 날짜 2 : 일수가 나옴
날짜 1 + 숫자/24 : 시간을 날짜에 더함
변환형 함수
명시적 데이터 유형 변환 : 데이터 변환 함수로 명시해 변환시킴
암시적 데이터 유형 변환 : 데이터 자동으로 변환하여 계산
=> 암시적 인덱스 미사용 성능 오류, 명시적 데이터 변환이 더 좋음
ORACLE 변환함수
TO_CHAR(숫자|날짜 [, FORMAT]) : 숫자나 날짜를 주어진 FORMAT 형태로 문자열 타입 변환
TO_NUMBER(문자열) : 문자열을 숫자로 변환
TO_DATE(문자열 [, FORMAT]) : 문자열을 주어진 FORMAT 형태로 날짜로 변환
SQL 변환함수
CAST(expression AS data_type [(length)]) : expression을 목표 데이터 유형으로 변환
CONVERT(data_type [(length)], expression [, style]) : expression을 목표 데이터 유형으로 변환
'Back-End > SQL 개발자 자격증' 카테고리의 다른 글
[ 데이터베이스 ] Optimizer, Execution Plan 2 (1) | 2023.10.30 |
---|---|
[ 데이터베이스 ] Optimizer, Execution Plan (1) | 2023.10.28 |
[ 데이터베이스 ] WHERE, IN, LIKE, IS NULL, ROWNUM, TOP (0) | 2023.10.01 |
[ 데이터베이스 ] DML (INSERT, DELETE, SELECT, ALIAS, DUAL) (0) | 2023.09.29 |
[ 데이터베이스 ] ALTER TABLE, TRUNCATE, DROP, DELETE 차이 (0) | 2023.09.28 |