2021. 10. 30. 19:35ㆍCertificate`/SQLD
내장 함수 (Built-In Funtion)
단일행 함수
- SELECT, WHERE, ORDER BY, UPDATE(Set) 절에 사용
- 각 행들에 대해 개별적으로 작용
- 여러 인자를 입력해도 단 하나의 결과만 리턴
- 다중행 함수 (집계 함수 / 그룹 함수 / 윈도우 함수)
단일행 함수 종류
종류 | 내용 | 함수 |
문자열 함수 | 문자를 입력하면 문자/숫자 값을 반환 |
- LOWER(s), UPPER(s) - SUBSTR(s, m, n) / SUBSTRING(s, m, n) - LENGTH(s) / LEN(s) - LTRIM(s, 지정문자), RTRIM(s, 지정문자) - TRIM( [leading|trailing|both] 지정문자 from s) - ASCII(c), CHR(아스키n) / CHAR(아스키n) |
숫자형 함수 | 숫자를 입력하면 숫자 값 반환 |
- ABS(n), SIGN(n), MOD(n1, n2) - ROUND(n, m), TRUNC(n, m) - CEIL(n) / CEILING(n), FLOOR(n) - EXP(n1, n2), POWER(n1, n2), SQRT(n), LOG(n), LN(n) - SIN(n), COS(n), TAN(n) |
날짜형 함수 | DATE 타입의 값 연산 | - SYSDATE / GETDATE - EXTRACT / DATEPART - TO_NUMBER(TO_CHAR(d, 'YYYY'|'MM'|'DD')) / YEAR|MONTH|DAY |
변환형 함수 | 문자, 숫자, 날짜형 값의 데이터 타입 변환 |
- TO_NUMBER(s), TO_CHAR(n|날짜, FORMAT), TO_DATE(s, FORMAT) / CAST, CONVERT |
NULL 관련 함수 | NULL을 처리하기 위한 함수 |
- NVL(n1, n2) / IS NULL(n1, n2) - NVL2(n1, n2, n3) - NULLIF(n1, n2) - COALESCE(n1, n2, n3,...) |
※ Oracle함수/SQL Server함수, '/' 없으면 공통 함수 ※ s = 문자열 / c = 문자 / n = 숫자 / m = 위치 |
문자열 함수
≫ LOWER(s), UPPER(s)
≫ SUBSTR(s, m, n) / SUBSTRING(s, m, n)
- 문자열 s 중, m위치에서 n개의 문자 리턴
≫ LENGTH(s) / LEN(s)
≫ LTRIM(s, 지정 문자), RTRIM(s, 지정문자)
- L에서부터 지정문자 삭제 or R에서부터 지정문자 삭제
- 지정 문자는 대/소문자를 구별해서 제거한다
- SQL Server에서는 지정 문자를 사용하지 못하고 공백만 제거 가능
≫ TRIM( [leading|trailing|both] 지정문자 FROM s)
- leading = 왼쪽 / trailing = 오른쪽 / both = 양쪽
- both가 디폴트 값
≫ ASCII(c), CHR(아스키 n) / CHAR(아스키 n)
숫자형 함수
≫ ABS(n), SIGN(n), MOD(n1, n2)
- ABS = 절댓값 / SIGN = 양수(1) or 음수(-1) or 0 / MOD = 나머지 값 리턴
≫ ROUND(n, m), TRUNC(n, m)
- m이 양수일 경우
- ROUND = 소수점 m+1자리에서 반올림 / TRUNC = 소수점 m+1자리까지 버림
- m이 음수일 경우
- ROUND = 정수 |m|자리에서 반올림 / TRUNC = 정수 |m|자리까지 버림
≫ CEIL(n) / CEILING(n), FLOOR(n)
- CEIL = n보다 큰 최소 정수, FLOOR = n보다 작은 최대 정수
≫ EXP(n), POWER(n1, n2), SQRT(n), LOG(n1, n2), LN(n)
- EXP = e의 n승 / POWER = n1의 n2승 / SQRT = 루트 n / LN = 자연로그(밑이 e)
≫ SIN(n), COS(n), TAN(n)
날짜형 함수
≫ SYSDATE / GETDATE
≫ EXTRACT('YEAR'|'MONTH'|'DAY' FROM d) / DATEPART('YEAR'|'MONTH'|'DAY', d)
≫ TO_NUMBER(TO_CHAR(d, 'YYYY'|'MM'|'DD')) / YEAR(d)|MONTH(d)|DAY(d)
- 숫자형 리턴 / TO_NUMBER 없으면 문자형 리턴
변환형 함수
≫ TO_NUMBER(s), TO_CHAR(n|날짜, FORMAT), TO_DATE(s, FORMAT)
≫ CAST(표현식 AS 데이터 타입 [(LENGTH)]), CONVERT(데이터 타입 [(LENGTH)] 표현식, Style)
CAST('80' AS INT) -- 80
CONVERT(INT, '80') -- 80
NULL 관련 함수
※ NULL 연산
- NULL과 어떤 숫자를 연산하든 간에 결과는 NULL이다
≫ NVL(n1, n2) / IS NULL(n1, n2)
- n1이 NULL이면 n2 리턴 / n1이 NOT NULL이면 n1 리턴
≫ NVL2(n1, n2, n3)
- n1이 NULL이면 n3 리턴 / n1이 NOT NULL이면 n2 리턴
≫ NULLIF(n1, n2)
- n1과 n2가 같으면 NULL 리턴 / n1과 n2가 다르면 n1 리턴
≫ COALESCE(n1, n2, n3,...)
- NULL이 아닌 첫 번째 값 리턴
CASE 표현
CASE 대상값 WHEN 값1 THEN 결과1
WHEN 값2 THEN 결과2
,...
WHEN 값n THEN 결과n
END;
-------------------------------
CASE WHEN 조건1 THEN 결과1
WHEN 조건2 THEN 결과2
,...
WHEN 조건n THEN 결과n
END;
-------------------------------
DECODE(컬럼, 조건1, 결과1, 조건2, 결과2, 조건3, 결과3,....);