1. 문자 함수

함수 설명
UPPER(문자열)
LOWER(문자열)
UPPER는 문자 데이터를 모두 대문자로 변환하여 반환하고, LOWER는 소문자로 변환하여 반환한다.
INITCAP(문자열) 문자 데이터 중 첫 글자는 대문자로, 나머지 문자는 소문자로 변환하여 반환한다.
LENGTH(문자열) 특정 문자열의 길이를 구할 때 사용한다.
LENGTHB(문자열) 특정 문자열의 바이트 수를 구할 때 사용한다.
SUBSTR(문자열, 시작 위치, 추출 길이) - 문자열 데이터의 시작 위치부터 추출 길이만큼 추출한다.
- 추출 길이를 생략할 경우 문자열 데이터 끝까지 추출한다.
INSTR(문자열, 찾으려는 문자, 시작 위치, 찾으려는 문자 순서) - 문자열 데이터 안에 특정 문자나 문자열이 어디에 포함되어 있는지 확인할 때 사용한다.
- 시작 위치를 생략할 경우 기본값 1이 적용된다.
- 찾으려는 문자 순서를 생략할 경우 기본값 1이 적용된다.
REPLACE(문자열, 찾는 문자, 대체할 문자) - 문자열 데이터에 포함된 문자를 다른 문자로 대체할 때 사용한다.
- 대체할 문자를 생략할 경우 찾는 문자로 지정한 문자는 문자열에서 삭제된다.
LPAD(문자열, 자릿수, 빈 공간에 채울 문자)
RPAD(문자열, 자릿수, 빈 공간에 채울 문자)
- 데이터 길이가 지정한 자릿수보다 작을 경우 나머지 공간을 특정 문자로 채운다.
- LPAD는 남은 빈 공간을 왼쪽에 채우고, RPAD는 오른쪽에 채운다.
- 빈 공간에 채울 문자를 지정하지 않으면, 빈 공간의 자릿수만큼 공백 문자로 처리된다.
CONCAT(문자열, 문자열) 두 개의 문자열 데이터를 하나의 데이터로 연결한다.
TRIM([삭제 옵션] [삭제할 문자] FROM 문자열) - 문자열 데이터 내에서 양쪽 공백을 제거하기 위해 사용한다. 특정 문자를 지울 수도 있다.
- LEADING: 왼쪽에 있는 글자를 지우는 삭제 옵션이다.
- TRAILING: 오른쪽에 있는 글자를 지우는 삭제 옵션이다.
- BOTH: 양쪽의 글자를 모두 지우는 삭제 옵션이다.
- 삭제 옵션은 생략할 수 있다. 생략할 경우 BOTH로 자동 설정된다.
- 삭제할 문자는 한 개만 작성할 수 있다.
- 삭제할 문자가 생략될 경우, 공백을 제거한다.
- 삭제 옵션과 삭제할 문자를 모두 생략할 경우 FROM 또한 생략해야 한다.
LTRIM(문자열, 삭제할 문자)
RTRIM(문자열, 삭제할 문자)
- LTRIM은 왼쪽, RTRIM은 오른쪽의 지정 문자를 삭제한다.
- 삭제할 문자를 지정하지 않을 경우 공백 문자가 삭제된다.
- 삭제할 문자가 여러 개 올 수 있다.
/* UPPER, LOWER 함수 예시 */
SELECT UPPER(ENAME), LOWER(ENAME)
FROM EMP;

/* INITCAP 함수 예시 */
SELECT INITCAP(ENAME)
FROM EMP;

/* LENGTH 함수 예시 */
SELECT ENAME
FROM EMP
WHERE LENGTH(ENAME) >= 5;

/* LENGTHB 함수 예시 */
SELECT LENGTHB(ENAME)
FROM EMP;

/* SUBSTR 함수 예시 */
SELECT SUBSTR(JOB, 3, 2)
FROM EMP;

/* INSTR 함수 예시 */
SELECT INSTR('HELLO!', 'L', 2, 2)
FROM DUAL;

/* REPLACE 함수 예시 */
SELECT REPLACE('010-1234-5678', '-', ' ')
FROM DUAL;

/* LPAD, RPAD 함수 예시 */
SELECT LPAD('HELLO', 10, '*'), RPAD('HELLO', 10)
FROM DUAL;

/* CONCAT 함수 예시 */
SELECT CONCAT(EMPNO, CONCAT(' : ', ENAME))
FROM EMP;

/* TRIM 함수 예시1 */
SELECT TRIM(' _HELLO_ '), TRIM(LEADING, ' _HELLO_ ')
FROM DUAL;

/* TRIM 함수 예시2 */
SELECT TRIM('_' FROM '_HELLO_'), TRIM(BOTH '_' FROM '_HELLO_')
FROM DUAL;

/* LTRIM, RTRIM 함수 예시 */
SELECT LTRIM(' _HELLO_ '), RTRIM('<_HELLO_>', '_<')
FROM DUAL;

 

1.1 || 연산자

- CONCAT 함수와 유사하게 열이나 문자열을 연결한다.

/* 예시 */
SELECT EMPNO || ' : ' || ENAME
FROM EMP;

 

2. 숫자 함수

함수 설명
ROUND(숫자, 반올림 위치) - 특정 숫자를 반올림한다.
- 반올림 위치를 설정하지 않으면 소수점 첫 째 자리에서 반올림한다. 반올림 위치를 0으로 설정한 것과 같다.
- 반올림 위치가 음수로 내려가면 자연수 쪽으로 한 자리씩 위로 반올림하게 된다.
TRUNC(숫자, 버림 위치) - 특정 숫자를 버림한다.
- 버림 위치를 설정하지 않으면 소수점 첫 째 자리에서 버림한다. 버림 위치를 0으로 설정한 것과 같다.
CEIL(숫자)
FLOOR(숫자)
CEIL 함수는 입력된 숫자와 가장 가까운 큰 정수를 반환하고, FLOOR 함수는 가장 가까운 작은 정수를 반환한다.
MOD(숫자, 나눌 숫자) 특정 숫자를 나누고 그 나머지를 출력한다.
/* ROUND 함수 예시 */
SELECT ROUND(123.456, -2)
FROM DUAL;

/* TRUNC 함수 예시 */
SELECT TRUNC(123.456, -1)
FROM DUAL;

/* CEIL, FLOOR 함수 예시 */
SELECT CEIL(3.14), FLOOR(-3.14)
FROM DUAL;

/* MOD 함수 예시 */
SELECT MOD(11, 2)
FROM DUAL;

 

3. 날짜 함수

함수 설명
ADD_MONTHS(날짜 데이터, 더할 개월 수) 특정 날짜 데이터에 입력한 개월 수만큼의 이후 날짜를 출력한다.
MONTHS_BETWEEN(날짜 데이터, 날짜 데이터) 두 날짜 간의 개월 수 차이를 구한다.
NEXT_DAY(날짜 데이터, 요일 문자) 특정 날짜를 기준으로 돌아오는 요일의 날짜를 출력한다.
LAST_DAY(날짜 데이터) 특정 날자가 속한 달의 마지막 날짜를 출력한다.
ROUND(날짜 데이터, 반올림 기준 포맷)
TRUNC(날짜 데이터, 버림 기준 포맷)
포맷을 기준으로 반올림과 버림을 적용한다.
/* ADD_MONTHS 함수 예시 */
SELECT ENAME
FROM EMP
WHERE ADD_MONTHS(HIREDATE, 120) > SYSDATE;

/* MONTHS_BETWEEN 함수 예시 */
SELECT TRUNC(MONTHS_BETWEEN(SYSDATE, HIREDATE))
FROM EMP;

/* NEXT_DAY 함수 예시 */
SELECT NEXT_DAY(SYSDATE, '월요일')
FROM DUAL;

/* LAST_DAY 함수 예시 */
SELECT LAST_DAY(SYSDATE)
FROM DUAL;

/* ROUND, TRUNC 함수 예시 */
SELECT ROUND(SYSDATE, 'Q'), TRUNC(SYSDATE, 'CC')
FROM DUAL;

 

3.1 날짜 데이터 연산

연산 설명
날짜 데이터 + 숫자 날짜 데이터보다 숫자 일 수 이후의 날짜로 연산된다.
날짜 데이터 - 숫자 날짜 데이터보다 숫자 일 수 이후의 날짜로 연산된다.
날짜 데이터 + 날짜 데이터 두 날짜 데이터 간의 일수 차이로 연산된다.
날짜 데이터 - 날짜 데이터 지원하지 않는 연산이다.
/* 날짜 데이터 + 숫자 연산 예시 */
SELECT SYSDATE +3
FROM DUAL;

/* 날짜 데이터 - 숫자 연산 예시 */
SELECT SYSDATE -3
FROM DUAL;

 

3.2 날짜 데이터 기준 포맷

포맷 모델 기준 단위
CC, SCC 네 자리 연도의 끝 두 자리를 기준으로 사용한다.
SYYYY, YYYY, YEAR,
SYEAR, YYY, YY, Y
날짜 데이터의 해당 연, 월, 일의 7월 1일을 기준으로 사용한다.
IYYY, IYY, IY, I ISO 8601에서 제정한 날짜 기준년도 포맷을 기준으로 사용한다.
Q 각 분기의 두 번째 달의 16일을 기준으로 사용한다.
MONTH, MON, MM, RM 각 달의 16일을 기준으로 사용한다.
WW 해당 연도의 몇 주(1~53번째 주)를 기준으로 사용한다.
IW ISO 8601에서 제정한 날짜 기준 해당 연도의 주를 기준으로 사용한다.
W 해당 월의 주(1~5번째 주)를 기준으로 사용한다.
DDD, DD, J 해당 일의 정오를 기준으로 사용한다.
DAY, DY, D 한 주가 시작되는 날짜를 기준으로 사용한다.
HH, HH12, HH24 해당일의 시간을 기준으로 사용한다.
MI 해당일 시간의 분을 기준으로 사용한다.

 

4. 형 변환 함수

형 변환 함수

함수 설명
TO_CHAR(날짜 데이터, 원하는 문자 형태, 'NLS_DATE_LANGUAGE = language') - 날짜 데이터를 원하는 형태의 문자열로 출력한다.
- NLS_DATE_LANGUAGE를 사용하면 특정 언어에 맞게 출력할 수 있다. 필수 설정은 아니다.
TO_NUMBER(문자열 데이터, 원하는 숫자 형태) 문자열을 지정한 형태의 숫자로 인식하여 숫자 데이터로 변환한다.
TO_DATE(문자열 데이터, 원하는 날짜 형태) 문자열 데이터를 날짜 데이터로 변환한다.
/* TO_CHAR 함수 예시1 */
SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD HH12:MI:SS A.M.')
FROM DUAL;

/* TO_CHAR 함수 예시2 */
SELECT TO_CHAR(SYSDATE, 'MON', 'NLS_DATE_LANGUAGE = ENGLISH')
FROM DUAL;

/* TO_CHAR 함수 예시3 */
SELECT TO_CHAR(SAL, '999,999.00')
FROM EMP;

/* TO_NUMBER 함수 예시 */
SELECT TO_NUMBER('1,500', '999,999')
FROM DUAL;

/* TO_DATE 함수 예시 */
SELECT *
FROM EMP
WHERE HIREDATE > TO_DATE('1980/1/1', 'YYYY/MM/DD');

 

4.1 날짜 표현 형식

형식 설명
CC 세기
YYYY, RRRR 연(4자리 숫자)
YY, RR - 연(2자리 숫자)
- YY는 어떤 두 자리 수가 입력되어도 현 시점의 연도와 동일한 연도로 계산한다.
- RR은 현 시점 혹은 입력된 연도의 끝 자리 수가 00~49, 50~99인 경우를 계산하여 비교적 가까운 날짜 데이터를 계산한다. 
MM 월(2자리 숫자)
MON 월(언어별 월 이름 약자)
MONTH 월(언어별 월 이름 전체)
DD 일(2자리 숫자)
DDD 1년 중 며칠(1~366)
DY 요일(언어별 요일 이름 약자)
DAY 요일(언어별 요일 이름 전체)
W 1년 중 몇 번째 주(1~53)

 

4.2 시간 표현 형식

형식 설명
HH24 24시간으로 표현한 시간
HH, HH12 12시간으로 표현한 시간
MI
SS
AM, PM, A.M., P.M. 오전, 오후 표시

 

4.3 숫자 데이터 형식

형식 설명
9 숫자의 한 자리를 의미한다. 빈 자리를 채우지 않는다.
0 빈 자리를 0으로 채운다.
$ 달러($) 표시를 붙여서 출력한다.
L L(Locale) 지역 화폐 단위 기호를 붙여서 출력한다.
. 소수점을 표시한다.
, 천 단위의 구분 기호를 표시한다.

 

5. NULL 처리 함수

함수 설명
NVL(데이터, NULL일 경우 반환할 데이터) 데이터가 NULL이 아닐 경우 데이터를 그대로 반환하고, NULL인 경우 지정한 데이터를 반환한다.
NVL2(데이터, NULL이 아닐 경우 반환할 데이터, NULL일 경우 반환할 데이터) 데이터가 NULL이 아닐 때와 NULL일 때 출력 데이터를 각각 지정한다.
/* NVL 함수 예시 */
SELECT SAL+NVL(COMM, 0)
FROM EMP;

/* NVL2 함수 예시 */
SELECT NVL2(COMM, 'O', 'X'), NVL2(COMM, SAL*12+COMM, SAL*12)
FROM EMP;

 

6. DECODE 함수와 CASE문

/* DECODE 함수 */
DECODE(데이터,
[조건1], [데이터=조건1일 경우 반환할 결과],
...
[조건n], [데이터=조건n일 경우 반환할 결과],
일치하는 경우가 없을 때 반환할 결과)

/* CASE문 */
CASE 데이터
WHEN 조건1 THEN 조건1=TRUE일 경우 반환할 결과
...
WHEN 조건n THEN 조건n=TRUE일 경우 반환할 결과
ELSE 일치하는 경우가 없을 때 반환할 결과
END
함수 설명
DECODE 기준이 되는 데이터를 먼저 지정한 후 해당 데이터 값에 따라 다른 결과 값을 반환한다.
CASE 문 - 특정 조건에 따라 반환할 데이터를 설정할 때 사용한다.
- DECODE 함수와 달리, 기준 데이터가 없어도 되고 같은 조건 이외의 조건 또한 사용 가능하다.
/* DECODE 함수 예시 */
SELECT DECODE(JOB, 'MANAGER', SAL*1.1, 'SALESMAN', SAL*1.05, SAL*1.03)
FROM EMP;

/* CASE문 예시1 */
SELECT
CASE JOB
WHEN 'MANAGER' THEN SAL*1.1
WHEN 'SALESMAN' THEN SAL*1.05
ELSE SAL*1.03
END AS UPSAL
FROM EMP;

/* CASE문 예시2 */
SELECT
CASE
WHEN COMM IS NULL THEN '해당사항 없음'
WHEN COMM=0 THEN '수당없음'
WHEN COMM>0 THEN '수당: ' || COMM
END AS COMM_TEXT
FROM EMP;

 

참고

- 『오라클로 배우는 데이터베이스 입문』

- webstudynote.tistory.com

'Database' 카테고리의 다른 글

Oracle 그룹화 함수  (0) 2021.10.15
Oracle 다중행 함수  (0) 2021.10.15
Oracle 연산자  (0) 2021.10.07
Oracle 다중 INSERT  (0) 2021.10.05
Oracle 객체 종류  (0) 2021.10.05