(SQLD) 함수(Function)
1. 함수의 유형
- 사용자 정의 함수 : 사용자가 정의한 함수
- 내장 함수 : DBMS에서 정의된 함수
- 단일행 함수 : 문자형, 숫자형, 날자형, 제어 함수, 변환 함수, NULL관련 함수
- 다중행 함수 : 그룹 함수, 윈도우 함수
2. 문자형 함수
- LOWER(CAR1) : 문자열을 소문자로 변환
- UPPER(CAR1) : 문자열을 대문자로 변환
- ASCII(문자) : 문자를 아스키코드로 표현
- CHR(ASCII) : 아스키코드를 문자로 표현
- CONCAT(CAR1,CAR2) : CAR1과 CAR2를 이어서 표현
- SUBSTR(CAR1,m,n) : 문자열의 m번 째 부터 n개를 출력
- LENGTH(CAR1) : 문자열의 길이를 출력
- LTRIM(CAR1,지정 문자) : 문자열의 왼쪽으로부터 지정문자를 삭제
- RTRIM(CAR1, 지정 문자) : 문자열의 오른쪽으로부터 지정문자를 삭제
- TRIM(CAR1) : 문자열의 양쪽에서 공백을 제거
- TRIM(지정 문자 FROM CAR1) : 문자열의 양쪽에서 지정문자를 제거
- REPLACE(CAR1) : 문자열내의 공백을 모두 제거
3. 숫자형 함수
- ABS(n) : 숫자를 절댓값으로 표현
- SIGN(n) : 음수=-1 / 0=0 / 양수=1 표현
- MOD(m,n) : m/n의 나머지를 표현
- CEIL(n) : 같거나 큰 최소의 숫자(올림)
- FLOOR(n) : 같거나 작은 최대의 숫자(내림)
- ROUND(m,n) : 소숫점n 자리수 까지 표현, n+1자리수에서 반올림
- TRUNC(m,n) : 소숫점n 자리수 까지 표현, n+1자리수에서 절삭
4. 변환형 함수
- TO_CHAR(숫자|날자) : 숫자나 날자를 문자로 변환
- TO_CHAR(숫자|날자, FORMAT) : FORMAT = 'YYYY/MM/DD'로 지정시 해당 형식을 지닌 문자로 변환
- TO_NUMBER(CAR) : 문자열을 숫자로 변환
- TO_DATE(CAR) : 문자열을 날자로 변환
* 날자+1은 1당 1Day를 의미함
5. 날자형 함수
- SYSDATE : 현재 날자와 시각을 표현
- EXTRACT('YYYY'|'MM'|'DD' FROM 날자) : 날자 부분추출
- TRUNC(날자,'DD') : Day까지만 표기, YY,MM등으로 조정 가능
6. CASE Expression
: 표현식 이지만 함수의 성격을 지님, IF-THEN-ELSE의 논리 흐름, 중첩이 가능함
SELECT COL,
CASE
WHEN COL1 = '1' THEN '일'
WHEN COL1 = '2' THEN '이'
WHEN COL1 = '3' THEN '삼'
WHEN COL1 = '4' THEN '사'
ELSE '그 외'
END AS 숫자
FROM TAB;
SELECT COL,
CASE COL1
WHEN '1' THEN '일'
WHEN '2' THEN '이'
WHEN '3' THEN '삼'
WHEN '4' THEN '사'
ELSE '그 외'
END AS 숫자
FROM TAB;
/*실행 결과는 동일*/
7. DECODE(Oracle 에서만 지원)
: DECODE(표현식, 기준값1, 출력값2, 기준값2, 출력값2, 기준값3, 출력값3 .... 디폴트값) 으로 사용됨
SELECT COL1
DECODE(NUMBER,
'1', '일',
'2', '이',
'3', '삼',
'4', '사', '모름') AS NUMBER
FROM TAB1;
8. NULL관련 함수
: NULL은 공백, '0', 공집합과는 다른의미
- NVL(표현식, 대체값) : 표현식의 값이 NULL이면 대체값 표현, NULL이 아니면 표현식 그대로 출력, 표현식과 대체값의 데이터 타입은 동일해야함
- NULLIF(표현식1, 표현식2) : 두 식이 같으면 NULL, 같지 않으면 표현식1의 값을 반환
- COALESCE(표현식1, 표현식2, 표현식3......) : 임의의 개수의 표현식에서 NULL이 아닌 최초의 표현식을 반환, 모든 표현식이 NULL일 때 NULL반환