본문 바로가기

SQL/Oracle

오라클 함수 사용















- 숫자 관련 함수

ㆍ ABS : 절대값

SELECT ABS(-10)

FROM DUAL;


FLOOR : 버림

SELECT FLOOR(12.567)

FROM DUAL;


ROUND(대상, 자리수) : 반올림

SELECT ROUND(12.567)

FROM DUAL;


SELECT ROUND(12.567, 2)

FROM DUAL;


SELECT ROUND(12.567, -1)

FROM DUAL;


TRUNC : 특정 자리 잘라냄

SELECT TRUNC(12.345, 2)

, TRUNC(12.345, -1)

, TRUNC(12.345)

FROM DUAL;


ㆍMOD : 나머지

SELECT MOD(17, 3)

FROM DUAL;


- 문자 관련 함수

ㆍUPPER : 대문자 변환

SELECT UPPER('testuser')

FROM DUAL;


ㆍLOWER : 소문자 변환

SELECT LOWER('TESTUSER')

FROM DUAL;


ㆍINITCAP : 이니셜만 대문자 변환

SELECT INITCAP('TESTUSER HOMEPAGE')

FROM DUAL;


ㆍLENGTH : 문자열 길이

SELECT LENGTH('TESTUSER')

, LENGTH('테스트사용자')

FROM DUAL;


ㆍSUBSTR(대상, 시작위치, 추출길이) : 문자열 일부 추출

SELECT SUBSTR('Welcome to testuser', 5, 2)

FROM DUAL;


SELECT SUBSTR('Welcome to testuser', -5, 2)

FROM DUAL;


ㆍINSTR(대상, 찾을문자, 시작위치, 발견되는위치인덱스) : 특정 문자 위치

SELECT INSTR('Welcome to testuser', 'e', 6, 3)

FROM DUAL;


ㆍLPAD(대상, 채울길이, 채울문자) : 왼쪽을 특정 문자로 지정한 길이만큼 채움

SELECT LPAD('testuser', 20, '@')

FROM DUAL;


ㆍRPAD(대상, 채울길이, 채울문자) : 오른쪽을 특정 문자로 지정한 길이만큼 채움

SELECT RPAD('testuser', 20, '@')

FROM DUAL;


ㆍLTRIM : 왼쪽 공백문자 제거

SELECT LTRIM(' testuser')

FROM DUAL;


ㆍRTRIM : 오른쪽 공백문자 제거

SELECT RTRIM('testuser ')

FROM DUAL;


ㆍTRIM : 양쪽 공백문자 제거

SELECT TRIM(' testuser ')

FROM DUAL;


ㆍREPLACE : 문자 변환

SELECT REPLACE('testuser', 't', 'T')

FROM DUAL;


ㆍCONCAT : 문자열 결합

SELECT CONCAT('Welcome to', ' testuser')

FROM DUAL;


※ || (파이프라인)을 사용해도 동일한 결과

SELECT 'Welcome to' || ' testuser'

FROM DUAL;


- 날짜 관련 함수

ㆍSYSDATE : 현재 날짜

SELECT SYSDATE

FROM DUAL;


SELECT SYSDATE-1 -- 어제

, SYSDATE+1 -- 내일

FROM DUAL;


ㆍMONTHS_BETWEEN : 날짜 사이 간격(월 단위)

SELECT MONTHS_BETWEEN(SYSDATE, '20130101')

FROM DUAL;


ㆍADD_MONTHS : 특정 일자에 월 단위로 더함

SELECT ADD_MONTHS(SYSDATE, 6)

FROM DUAL;


ㆍLAST_DAY : 해당 달의 마지막 날짜

SELECT LAST_DAY(SYSDATE)

FROM DUAL;


- 형 변환 관련 함수

ㆍTO_CHAR : 문자형으로 변환

SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD')

FROM DUAL;


SELECT TO_CHAR(1234, '0000000000')

FROM DUAL;;


SELECT TO_CHAR(1234, '999,999')

FROM DUAL;


ㆍTO_NUMBER : 숫자형으로 변환

SELECT TO_NUMBER('20000') - 300

FROM DUAL;


ㆍTO_DATE : 날짜형으로 변환

SELECT MONTHS_BETWEEN(SYSDATE, TO_DATE('20130101', 'YYYYMMDD'))

FROM DUAL;


NVL : NULL을 지정한 값으로 변환

SELECT NVL(NULL, 'EMPTY')

FROM DUAL;


- 조건 함수

ㆍDECODE(표현식, 조건1, 결과1, 조건2, 결과2, ..., 조건n, 결과n, 디폴트결과)

SELECT DECODE(10, 10, 'A', 20, 'B', 30, 'C', 'D')

FROM DUAL;


ㆍCASE

SELECT CASE 10

WHEN 10 THEN 'A'

WHEN 20 THEN 'B'

WHEN 30 THEN 'C'

ELSE 'D' END

FROM DUAL;


SELECT CASE

WHEN DEPTNO=10 THEN 'A'

WHEN DEPTNO=20 THEN 'B'

WHEN DEPTNO=30 THEN 'C'

ELSE 'D' END

FROM EMP;