본문 바로가기
Back/Database

Oracle(SQL) 기본 제공 함수

by 시월해 2021. 4. 7.

1. 날짜와 관련된 함수들

 

1) 현재 시스템의 날짜를 구해 오는 함수 : sysdate

SELECT SYSDATE FROM DUAL;

2) 현재 날짜에서 개월 수를 더해 주는 함수 : ADD_MONTHS(현재 날짜, 숫자(개월수));

SELECT ADD_MONTHS(SYSDATE, 3) FROM DUAL;

3) 다가올 날짜(요일)을 구해주는 함수 : NEXT_DAY(현재 날짜,'요일');

SELECT NEXT_DAY(SYSDATE, '화요일') FROM DUAL;

4) 형식에 맞게 문자열로 날짜를 출력하는 함수 : TO_CHAR(날짜, '날짜형식');

SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD') FROM DUAL;
SELECT TO_CHAR(SYSDATE, 'MM/DD/YYYY') FROM DUAL;
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM DUAL;
SELECT TO_CHAR(SYSDATE, 'YY-MM-DD') FROM DUAL;

 

2. 문자와 관련된 함수들

 

1) 문자열을 연결하는 함수 : CONCAT('문자열1','문자열2');

SELECT CONCAT('안녕','하세요') FROM DUAL;

- 문자열을 연결하는 연산자 : ||

SELECT '방가' || '방가' FROM DUAL;

2) 소문자를 대문자로 바꾸어 주는 함수 : UPPER()

SELECT UPPER('happy day') FROM DUAL;

3) 대문자를 소문자로 바꾸어 주는 함수 : LOWER()

SELECT LOWER('HELLO WORLD') FROM DUAL;

4) 문자열을 X부터 Y의 길이만큼 추출해 내는 함수 : SUBSTR('문자열', X, Y)

SELECT SUBSTR('ABCDEFG', 3, 2) FROM DUAL; -- CD
SELECT SUBSTR('ABCDEFG', -3, 2) FROM DUAL; -- EF -를 붙이면 뒤에서부터 시작

5) 자릿수를 늘려주는 함수

- 왼쪽 자릿수를 늘려주는 함수 : LPAD('문자열', 전체 자릿수, '늘어난 자릿수에 들어갈 문자열')

SELECT LPAD('ABCDEFG', 15, '*') FROM DUAL;

- 오른쪽 자릿수를 늘려주는 함수 : RPAD('문자열', 전체 자릿수, '늘어난 자릿수에 들어갈 문자열')

SELECT RPAD('ABCDEFG', 15, '*') FROM DUAL;

6) 문자를 지워주는 함수

- 왼쪽 문자를 지워주는 함수 : LTRIM()

SELECT LTRIM('ABCDEFG', 'A') FROM DUAL;

- 오른쪽 문자를 지워주는 함수 : RTRIM()

SELECT RTRIM('ABCDEFG', 'FG') FROM DUAL;

7) 문자열을 교체해주는 함수 : REPLACE()

형식) REPLACE('원본 문자열','교체될 문자열','새로운 문자열')

SELECT REPLACE('Java Program', 'Java', 'JSP') FROM DUAL;

 

3. 숫자와 관련된 함수들

 

1) 절대값을 구하는 함수 : ABS(정수)

SELECT ABS(23) FROM DUAL;
SELECT ABS(-23) FROM DUAL;

2) 양수(1), 음수(-1), 0을 반환해 주는 함수 : SIGN(정수)

SELECT SIGN(23), SIGN(-23), SIGN(0) FROM DUAL;

3) 반올림을 해 주는 함수 : ROUND(실수)

SELECT ROUND(0.123) FROM DUAL;
SELECT ROUND(0.523) FROM DUAL;

- 반올림 할 때 자릿수 지정

SELECT ROUND(0.1234567, 6) FROM DUAL;
SELECT ROUND(2.3423466, 4) FROM DUAL;

4) 소숫점 이하 자릿수를 잘라내는 함수 : TRUNC()

SELECT TRUNC(1234.1234567, 0) FROM DUAL;
SELECT TRUNC(1234.1234567, 4) FROM DUAL;
SELECT TRUNC(1234.1234567, -3) FROM DUAL; -- 정수값(소수점 앞)을 잘라내라는 의미

5) 무조건 올림을 해주는 함수 : CEIL()

SELECT CEIL(22.8) FROM DUAL;
SELECT CEIL(22.1) FROM DUAL;

6) 제곱을 구해주는 함수 : POWER()

SELECT POWER(4,3) FROM DUAL;

7) 나머지를 구해주는 함수 : MOD()

SELECT MOD(7,4) FROM DUAL;

8) 제곱근을 구해주는 함수 : SQRT()

SELECT SQRT(3) FROM DUAL;
SELECT SQRT(16) FROM DUAL;

 


[예제 테이블]

-- [문제1] emp 테이블에서 결과가 아래와 같이 나오도록 출력
-- 결과) 'SCOTT의 담당업무는 ANALYST 입니다.'
-- 단, CONCAT() 함수 이용.
SELECT CONCAT(CONCAT(ename, '의 담당업무는 '),CONCAT(job, ' 입니다.'))
FROM emp
WHERE ename = 'SCOTT';

-- [문제4] emp 테이블에서 사번, 이름, 담당업무 출력
-- 단, 담당업무를 소문자로 변경
SELECT empno, ename, LOWER(job) FROM emp;

-- [문제5] 주민등록번호 중에서 생년월일을 추출하여 화면에 출력.
SELECT SUBSTR('990201-2000000', 0, 6) FROM DUAL;

-- [문제6] emp 테이블에서 담당업무에 'A'라는 글자를 'S'로 바꾸어 출력
SELECT REPLACE(job, 'A', 'S') FROM emp;

 

 

 

 

 

 

 

'Back > Database' 카테고리의 다른 글

GROPU BY  (0) 2021.04.07
서브 쿼리(SUB QUERY)  (0) 2021.04.07
SQL JOIN  (0) 2021.03.31
SQL NVL, LITERAL, AS, DISTINCT, WHERE절 활용  (0) 2021.03.26
SQL 기본 개념(테이블 생성 및 변경, 컬럼 생성 및 변경)  (0) 2021.03.26