1. 숫자형 함수
- ABS(n): n의 절대값을 반환
- SEIL(n): n과 같거나 큰 최소 정수를 반환(올림)
- FLOOR(n): n과 같거나 작은 최소 정수를 반환(버림)
- ROUND(n, i): n을 소수점 i+1 자리에서 반올림(i=0이면 정수)
- TRUNC(n1, i): n을 소수점 i+1 자리에서 버림(i 생략시 0)
- SIGN(n): n의 부호 반환(n이 양수이면 1, 음수이면 -1, 0이면 0)
2. 문자형 함수
- CONCAT(char1, char2): char1과 char2 문자를 결합한 결과를 반환(∥연산자와 같음)
- LOWER(char): 문자를 소문자로 변환
- POWER(char): 문자를 대문자로 변환
- SUBSTR(char, n1, n2)
: char에서 n1 자리에서 시작해 n2 길이만큼을 잘라낸 결과를 반환
: n1을 0으로 명시하면 1이 적용
: n1이 음수이면 끝에서부터 거꾸로 세어 가져옴
: n2를 생략하면 n1부터 끝까지 반환
: n2값을 1미만으로 명시하면 NULL을 반환
SELECT SUBSTR('ABCDEFG', 3, 2)
FROM DUAL;
SELECT SUBSTR('ABCDEFG', -3)
FROM DUAL;
- TRIM(char): char의 양쪽 끝 공백을 제거
- ASCII(char): 문자의 ASCII 코드 값을 반환, CHR(n)함수와 반대 기능을 함
- LENGTH(char): char의 글자 수를 반환
3. 날짜형 함수
- SYSDATE: 현재 시간을 반환
- ADD_MONTHS(date, n): date날짜에 n개월을 더한 날짜를 반환(n이 음수면 뺌)
- MONTHS_BETWEEN(date1, date2): 두 날짜 사이의 개월 수를 반환
- LAST_DAY(date): date가 속한 날짜의 마지막 일자를 반환
4. 형변환 함수
- TO_NUMBER(char): char를 숫자형으로 변환
- TO_CHAR(n, number_format): n을 형식에 맞게 문자형으로 변환(number_format은 생략가능, ex)'99,999')
- TO_CHAR(date, date_format): date를 형식에 맞게 문자로 변환(date_format은 생략가능)
- TO_DATE(char, char_format): char을 형식에 맞게 날짜로 변환
5. NULL 관련 함수
- NVL(expr1, expr2): expr1인 경우 expr2를 반환(NULL인 경우의 대채값)
- NVL2(expr1, expr2, expr3): expr1이 NULL인 경우 expr3을, NULL이 아닌 경우 expr2를 반환
- COALESCE(expr1, expr2, ...): 매개변수인 expr 값 들에서 첫번째로 NULL이 아닌 값을 반환
- NULLIF(expr1, expr2): 매개변수 두 값을 비교해 두 값이 같으면 NULL, 그렇지 않으면 expr1을 반환
SELECT NVL(NULL, 'N/A'),
NVL2(1, 2, 3),
COALESCE(NULL, NULL, 5, 4, NULL),
NULLIF('NULL', 'null')
FROM DUAL;
※ CASE 표현식
- 단순형 CASE 표현식 구문
CASE expr WHEN comparision_expr1 THEN return_expr1
WHEN comparision_expr1 THEN return_expr2
...
ELSE else_expr
END
- 검색형 CASE 표현식 구문 (주로 사용함)
CASE WHEN condition1 THEN return_expr1
WHEN condition2 THEN return_expr2
...
ELSE else_expr
END
검색형 CASE 구문 예시)
SELECT emp_name
,age
,CASE WHEN age BETWEEN 0 AND 19 THEN '10대'
,CASE WHEN age BETWEEN 20 AND 29 THEN '20대'
,CASE WHEN age BETWEEN 30 AND 39 THEN '30대'
,CASE WHEN age BETWEEN 40 AND 49 THEN '40대'
,CASE WHEN age BETWEEN 50 AND 59 THEN '50대'
,ELSE '60대 이상'
END ages
FROM emp03;