SQL 기초2에서는 SQL에서 가장 자주 쓰이는 기본적인 문법에 대해 다루어 보았다.
이번 글에서는 SQL에서 제공하는 함수들에 대해서 알아보고자 한다.
오라클에서는 내장함수를 기본적으로 제공하고 있다.
그 함수들을 잘 활용한다면 원하는 더 용이하고 다양하게 데이터를 다룰 수 있을 것이다.
내장함수에는 단일행 함수와 다중행 함수가 있다.
단일행 함수= 데이터가 한 행씩 입력되고, 입력된 한 행당 결과가 하나씩 나오는 함수
다중행 함수= 데이터가 여러 행이 입력되지만, 결과가 하나의 행으로 나오는 함수
그럼 여러 함수들에 대하여 공부해보자..

1. 문자 함수 : 문자 데이터를 가공하는데 사용하는 함수
1) UPPER(문자열) - 괄호 안의 문자 데이터를 모두 대문자로 변환
2)LOWER(문자열) - 괄호 안의 문자 데이터를 모두 소문자로 변환
3)INITCAP(문자열) - 괄호 안의 문자 데이터 중 첫 글자는 대문자로, 나머지는 소문자로 변환
4)LENGTH(문자열) - 괄호 안의 문자 데이터의 길이를 반환
5)LENGTHB(문자열) - 괄호 안의 문자 데이터의 바이트 수를 반환
6)SUBSTR(문자열 데이터, 시작위치, 추출길이) - 문자열 데이터의 시작 위치부터 추출 길이만큼 추출
(단, 문자열의 시작은 0이 아니라 1부터)
SUBSTR(문자열 데이터, 시작위치) - 문자열 데이터의 시작 위치부터 끝까지 추출
7)INSTR(문자열 데이터, 위치를 찾으려는 문자, 위치 찾기를 시작할 위치, 몇 번째 문자를 찾을 것인지 지정)
- 문자열 데이터 안에서 특정 문자 위치를 찾는 INSTR 함수
SELECT INSTR('HELLO, ORACLE!', 'L'), -- 3
INSTR('HELLO, ORACLE!', 'L', 5), -- 12
INSTR('HELLO, ORACLE!', 'L', 2, 2) FROM dual; -- 4
8)REPLACE(문자열 데이터, 찾는 문자, 대체할 문자)
만약 대체할 문자를 생략한다면, 찾는 문자는 삭제된다
SELECT REPLACE('010-1234-5678', '-', ' ') ~ -- 010 1234 5678
SELECT REPLACE('010-1234-5678', '-') ~ -- 01012345678
9)LPAD(문자열 or 컬럼명, 데이터의 자릿수, 빈공간에 채울 문자) -왼쪽 패딩/
데이터가 지정한 길이보다 짧을 경우에 남은 공간만큼 왼쪽에 특정 문자로 채움
10)RPAD(문자열 or 컬럼명, 데이터의 자릿수, 빈공간에 채울 문자) -오른쪽 패딩/
데이터가 지정한 길이보다 짧을 경우에 남은 공간만큼 오른쪽에 특정 문자로 채움
SELECT RPAD('Oracle', 10, '#'), LPAD('Oracle', 10) FROM dual;
-- Oracle####, Oracle
11) CONCAT(컬럼1, 컬럼2) - 컬럼1과 컬럼2를 하나로 합치는 함수
CONCAT(컬럼1, CONCAT('사이에 넣고 싶은 문자', 컬럼2)) - 컬럼1과 컬럼2 사이에 넣고 싶은 문자로 넣어서 합침
SELECT CONCAT(empno, ename) from emp WHERE ename='scott';
-- 7788SCOTT
12)TRIM/RTRIM/LTRIM - 양쪽/오른쪽/왼쪽 특정 문자 제거
2. 숫자 함수
1)ROUND(숫자, 반올림 위치) - 특정 위치에서 반올림
2)TRUNC(숫자, 버림 위치) - 특정 위치에서 버림
3)CEIL(숫자) - 해당 숫자와 가까운 정수 중에서 가장 큰 정수
4)FLOOR(숫자) - 해당 숫자와 가까운 정수 중에서 가장 작은 정수
CEIL(3.14) -- 4
FLOOR(3.14) -- 3
4)FLOOR(숫자) - 해당 숫자와 가까운 정수 중에서 가장 작은 정수
5)MOD(나눠질 숫자, 나눌 숫자) - 나머지 출력
6)COUNT(칼럼) - 해당 칼럼의 갯수를 반환
7)LIMIT A, B - A번째부터 B개를 가져오라는 뜻( 0부터 시작)
-- 데이터를 5개만 가져오기
SELECT * FROM book LIMIT 5;
-- 데이터를 2번째부터 5개를 가져오기(첫 번째가 0)
SELECT * FROM book LIMIT 1,5;
8)AVG(칼럼) - 해당 칼럼의 데이터의 평균
9)SUM(칼럼) - 해당 칼럼의 데이터의 총 합
10)MAX(칼럼) - 해당 칼럼의 데이터의 최대값
11)MIN(칼럼) - 해당 칼럼의 데이터의 최소값
3. 날짜 함수: 날짜를 다루는 함수
날짜 데이터 + 숫자 => 해당 날짜보다 숫자만큼의 일수 이후의 날짜
날짜 데이터 - 숫자 => 해당 날짜보다 숫자만큼의 일수 이전의 날짜
날짜 데이터 -날짜 데이터 => 두 날짜 데이터 간의 일수 차이
날짜 데이터 + 날짜 데이터 => 연산 불가(지원 안함)
1)SYSDATE - 현재 날짜 출력
SELECT SYSDATE FROM dual;
2)ADD_MONTHS(날짜 데이터, 더할 개월 수) - 날짜 데이터에 숫자만큼의 개월을 더함
3)MONTHS_BETWEEN(날짜1, 날짜2) - 두 날짜 간의 날짜 차이를 개월 수로 계산하여 출력
4)NEXT_DAY(날짜 데이터, 요일 문자) - 특정 날짜를 기준으로 돌아오는 요일의 날짜를 출력해주는 함수
5)LAST_DAY(날짜 데이터) - 특정 날짜가 속한 달의 마지막 날짜를 출력해주는 함수
4. 형 변환 함수
1) TO_CHAR(날짜 데이터, 출력되길 원하는 문자형태) - 숫자 또는 날짜 데이터를 문자 데이터로 변환
2) TO_NUMBER(문자열 데이터, 인식될 숫자 형태) - 문자 데이터를 숫자 데이터로 변환
3) TO_DATE(문자열 데이터, 인식될 날짜 형태) - 문자 데이터를 날짜 데이터로 변환
5. NULL 처리 함수
1)NVL(널 여부를 검사할 컬럼, 데이터가 널일 경우 반환할 데이터)
SELECT empno, ename, sal, comm, sal+comm,
NVL(comm, 0)
SAL+NVL(comm, 0)
FROM EMP;
-- comm이 널이면 0으로 반환하여 그 데이터를 특정 열의 데이터와 더함
2)NVL2(널 여부를 검사할 컬럼, 데이터가 널이 아닐 경우 반환할 데이터, 데이터가 널일 경우 반환할 데이터)
SELECT empno,ename, comm,
NVL2(comm, 'O', 'X')
NVL2(comm, sal*12+comm, sal*12)
FROM EMP;
-- comm이 널일 경우 더할 필요도 없음
'SQL기초' 카테고리의 다른 글
SQL기초6 - 서브쿼리 (0) | 2022.07.20 |
---|---|
SQL 기초5 - 조인 (0) | 2022.07.07 |
SQL 기초4- 집합연산 (0) | 2022.07.07 |
SQL 기초2- 기본 문법 (0) | 2022.07.05 |
SQL 기초1- 데이터베이스와 RDBMS란? (0) | 2022.07.04 |