-> 블로그 이전

[SQLD] 2-6. Function

2021. 10. 30. 19:35Certificate`/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,....);