오라클 함수
1. 숫자 함수(Number Function)
ABS(n)
ABS함수는 절대값을 계산하는 함수입니다.
SQL>SELECT ABS(-10) Absolute FROM dual ;
Absolute
--------
10
CEIL(n)
CEIL함수는 주어진 값보다는 크지만 가장 근접하는 최소값을 구하는 함수입니다.
SQL>SELECT CEIL(10.1) TEST FROM dual ;
TEST
-------
11
SQL>SELECT CEIL(-10.1) TEST FROM dual ;
TEST
-------
-10
EXP(n)
EXP함수는 주어진 값의 e의 승수를 나타냅니다.
e는 2.171828183..입니다.
FLOOR(n)
FLOOR함수는 주어진 값보다 작거나 같은 최대 정수값을 구하는 함수입니다.
CEIL 함수와 비교해 보세요.
SQL>SELECT FLOOR(10.1) TEST FROM dual ;
TEST
-------
10
SQL>SELECT FLOOR(-10.1) TEST FROM dual ;
TEST
-------
-11
LN(n)
LN함수는 주어진 값의 자연로그 값을 반환합니다.
MOD(m, n)
MOD함수는 m을 n으로 나누어 남은 값을 반환한다. n이 0일 경우 m을 반환합니다.
SQL>SELECT MOD(9, 4) TEST FROM dual ;
TEST
-------
1
POWER(m, n)
POWER함수는 m의 n승 값을 계산합니다.
SQL>SELECT POWER(4, 2) TEST FROM dual ;
TEST
-------
16
ROUND(n, [m])
ROUND함수는 n값의 반올림을 하는 함수로 m은 소숫점 아래 자릿수를 나타냅니다.
SQL>SELECT ROUND(192.123, 1) TEST FROM dual ;
TEST
-------
192.1
SQL>SELECT ROUND(192.123, -1) TEST FROM dual ;
TEST
-------
190
SIGN(n)
SIGN함수는 n<0일 경우 -1DFM N=0일 경우 0을 N>0일 경우 1을 반환합니다.
SQRT(n)
SQRT함수는 n값의 루트값을 계산한다. n은 양수여야 합니다.
TRUNC(n, m)
TRUNC함수는 n값을 m 소숫점 자리로 반내림한 값을 반환합니다.
SQL>SELECT TRUNC(7.5597, 2) TEST FROM dual ;
TEST
-------
7.55
SQL>SELECT TRUNC (5254.26, -2 ) TEST FROM dual ;
TEST
-------
5200
2. 문자 함수
CONCAT(char1, char2)
CONCAT 함수는 Concatenation의 약자로 두 문자를 결합하는 역할을 합니다. "||" 연산자와 같은 역할을 합니다.
SQL>SELECT CONCAT('Oracle', ' Korea') NAME FROM dual ;
NAME
-------------
Oracle Korea
INITCAP(char)
주어진 문자열의 첫 번째 문자를 대문자로 변환시켜 줍니다.
SQL>SELECT INITCAP('kim jung sick') NAME FROM dual ;
NAME
-------------
Kim jung sick
LOWER(char)
문자열을 소문자로 변환 시켜 줍니다.
UPPER(char)
문자열을 대문자로 변환 시켜 줍니다.
SQL>SELECT LOWER('KIM JUNG SICK') NAME FROM dual ;
NAME
-------------
kim jung sick
SQL>SELECT UPPER('kim jung sick') NAME FROM dual ;
NAME
--------------
KIM JUNG SICK
LPAD(char1, n [,char2])
왼쪽에 문자열을 끼어 놓는 역할을 합니다. n은 반환되는 문자열의 전체 길이를 나타내며, char1의 문자열이 n보다 클 경우 char1을 n개 문자열 만큼 반환합니다.
SQL>SELECT LPAD('JUNG-SICK', 10, '*') NAME FROM dual ;
NAME
------------
*JUNG-SICK
RPAD(char1, n [,char2])
LPAD와 반대로 오른쪽에 문자열을 끼어 놓는 역할을 합니다.
SQL>SELECT RPAD('JUNG-SICK', 10, '*') NAME FROM dual ;
NAME
------------
JUNG-SICK*
SUBSTR(char, m ,[n])
SUBSTR함수를 이용하여 m 번째 자리부터 길이가 n개인 문자열을 반환한 합니다. m이 음수일 경우에는 뒤에서 M번째 문자부터 반대 방향으로 n개의 문자를 반환합니다.
SQL>SELECT SUBSTR('JUNG-SICK', 3, 3) NAME FROM dual ;
NAME
-----------
NG-
-- 뒤에서부터 자를
SQL>SELECT SUBSTR('JUNG-SICK', -3, 3) NAME FROM dual ;
NAME
-----------
ICK
LENGTH(char1)
문자열의 길이를 리턴 합니다.
SQL>SELECT LENGTH('JUNG-SICK') TEST FROM dual ;
TEST
----------
9
REPLACE(char1, str1, str2)
REPLACE는 문자열의 특정 문자를 다른 문자로 변환 합니다.
SQL> SELECT REPLACE('JACK and JUE','J','BL') "Changes" FROM DUAL;
Changes
--------------
BLACK and BLUE
SQL> SELECT REPLACE('JACK and JUE','JA','BL') "Changes" FROM DUAL
Changes
------------
BLCK and JUE
-- 대소문자를 구분한다는 것을 알수 있습니다.
SQL>SELECT REPLACE('JACK and JUE','j','BL') "Changes" FROM DUAL
Changes
------------
JACK and JUE
INSTR
문자열이 포함되어 있는지를 조사하여 문자열의 위치를 반환합니다. 지정한 문자열이 발견되지 않으면 0이 반환 됩니다.
-- 지정한 문자 OK가 발견되지 않아서 0이 반환 됩니다.
SQL>SELECT INSTR('CORPORATE FLOOR','OK') "Instring" FROM DUAL
Instring
----------
0
-- OR이 있는 위치 2를 반환 합니다. 왼쪽부터 비교를 한다는 것을 알 수 있습니다.
SQL>SELECT INSTR('CORPORATE FLOOR','OR') "Instring" FROM DUAL
Instring
----------
2
-- 왼쪽에서 3번째부터 시작을 해서 비교를 합니다. 2번째 OR의 위치가 반환 됩니다.
SQL>SELECT INSTR('CORPORATE FLOOR','OR', 3) "Instring" FROM DUAL
Instring
----------
5
-- 왼쪽에서 3번째부터 시작을 해서 비교를 하는데 OR이 두 번째 검색되는 지점의 위치를 반환 합니다.
SQL> SELECT INSTR('CORPORATE FLOOR','OR', 3, 2) "Instring" FROM DUAL;
Instring
----------
14
TRIM
특정한 문자를 제거 합니다.
제거할 문자를 입력하지 않으면 기본적으로 공백이 제거 됩니다.
리턴값의 데이터타입은 VARCHAR2 입니다.
-- 0을 제거 합니다.
SQL>SELECT TRIM(0 FROM 0009872348900) "TRIM Example" FROM DUAL;
TRIM Example
------------
98723489
-- 어떤 문자도 입력하지 않으면 기본적으로 공백이 제거 됩니다.
-- TRIM을 사용한 위에 예제와 사용하지 않은 아래 예제의 결과 값이 다르게 나오는 것을 알 수 있습니다.
SQL>SELECT NVL(TRIM (' '),'공백') "TRIM Example" FROM DUAL
TRIM Example
------------
공백
SQL>SELECT NVL(' ','공백') "TRIM Example" FROM DUAL
TRIM Example
------------
LTRIM
SQL>SELECT LTRIM('xyxXxyLAST WORD','xy') "LTRIM example" FROM DUAL;
LTRIM example
------------
XxyLAST WORD
RTRIM
SQL>SELECT RTRIM('BROWNINGyxXxy','xy') "RTRIM example" FROM DUAL;
RTRIM examp
-----------
BROWNINGyxX
3. 날짜 관련함수
LAST_DAY(d)
LAST_DAY함수는 달의 마지막 날의 날짜를 반환합니다
SQL>SELECT SYSDATE TODAY, LAST_DAY(SYSDATE) LASTDAY FROM dual ;
TODAY LASTDAY
-----------------------------
05-JUN-2000 30-JUN-2000
ADD_MONTHS(a, b)
ADD_MONTHS 함수는 a의 날짜에 b의 달을 더한 값을 반환 합니다.
SQL>SELECT TO_CAHR(ADD_MONTHS(SYSDATE,3),'RRRR/MM/DD' LASTDAY) "date"
FROM dual ;
date
------------
2000/09/05
MONTH_BETWEEN(a1, a2)
MONTH_BETWEEN은 a1과 a2 사이의 달의 수를 NUMBER형 타입으로 반환 합니다.
SQL>SELECT MONTHS_BETWEEN(TO_DATE('2000/06/05') , TO_DATE('2000/09/23')) "Date" FROM dual ;
Date
----------------
-3.880635
ROUND(d[,F])
ROUND 함수는 F에 지정된 단위로 반올림 합니다, F가 연도라면 연도 단위로 반올림 합니다.
SQL>SELECT ROUND(TO_DATE('1998/09/11'), 'YEAR') FROM dual ;
ROUND(TO_
--------------
99-01-01
SQL>SELECT ROUND(TO_DATE('1998/04/11'), 'MONTH') FROM dual ;
ROUND(TO_
---------------
98-04-01
SQL>SELECT ROUND(TO_DATE('1998/04/11'), 'DAY') FROM dual ;
ROUND(TO_
---------------
98-04-11
날짜에 대한 산술 연산
연 산 결과치 사 용 목 적
날짜 + 숫자 날짜 특정한 날로부터 며칠 후의 날짜 계산
ex)select to_date('20060228','YYYYMMDD')+1 from dual
-----------------------------------------------------
2006-03-01
날짜 - 숫자 날짜 특정한 날로부터 며칠 전의 날짜 계산
ex)select to_date('20060228','YYYYMMDD')-1 from dual
------------------------------------------------
2006-02-27
날짜 - 날짜 숫자 두 날짜 사이의 차이를 숫자로 계산
ex)select to_date('20060430')-to_date('20060420') from Dual
---------------------------------------------------
10
4. 변환 함수
TO_CHAR
TO_CHAR함수는 DATE형, NUMBER형을 VARCHAR2형으로 바꺼 줍니다.
SQL>SELECT TO_CHAR(SYSDATE, 'MONTH') CHARTEST FROM dual ;
CHARTEST
--------------
JUNE
SQL>SELECT TO_CHAR(SYSDATE) CHARTEST FROM dual ;
CHARTEST
--------------
00/06/10
TO_DATE
TO_DATE함수는 CHAR, VARCHAR2형을 DATE 타입으로 변환합니다.
SQL>SELECT TO_DATE('2000/06/16','RRRR/MM/DD') FROM dual ;
TO_DATE
------------
2000/06/16
TO_NUMBER
TO_NUMBER함수는 CHAR, VARCHAR2의 데이터 타입을 숫자형식으로 변환합니다.
SQL>SELECT TO_NUMBER('1210616') FROM dual ;
TO_NUMBER
--------------
1210616
5. 기타함수
NVL
NVL 함수는 NULL값을 다른 값으로 바꿀 때 쓰입니다.
모든 데이터 타입에 적용 가능합니다.
전환되는 값의 데이터 타입을 일치시켜야 합니다.
SQL>SELECT empno, NVL(comm, 0) FROM emp WHERE deptno = 30;
EMPNO NVL(COMM,0)
---------- -----------
7499 300
7521 500
7654 1400
7698 0
7844 0
7900 0
DECODE
DECODE 함수는 데이터 들을 다른 값으로 바꾸어 줍니다.
형식 DECODE(VALUE, IF1, THEN1, IF2, THEN2...)
VALUE 값이 IF1일경우에 THEN1값으로 바꾸어 주고 VALUE값이 IF2일경우에는 THEN2값으로 바꾸어 줍니다.
SQL> SELECT deptno,
DECODE(deptno, 10 , 'ACCOUNTING' ,
20 , 'RESEARCH' ,
30 , 'SALES' ,
40 , 'OPERATIONS')
FROM emp ;
DEPTNO DECODE(DEP
---------- ----------
20 RESEARCH
30 SALES
30 SALES
20 RESEARCH
30 SALES
30 SALES
10 ACCOUNTING
20 RESEARCH
DUMP
DUMP는 바이트 크기와 해당 데이터 타입 코드를 반환합니다..
SQL>SELECT ename, DUMP(ename, 16) "16진수"
FROM emp
WHERE ename = 'ALLEN'
ename 16진수
------ ------------------------------
ALLEN Typ=1 Len=5: 41,4c,4c,45,4e
GREATEST
GREATEST함수는 검색값 중에서 가장 큰 값을 반환 합니다.
SQL>SELECT GREATEST(10, 100, 5, -7) FROM DUAL;
GREATEST(10,100,5,-7)
---------------------
100
LEAST
LEAST함수는 GREATEST함수와 반대로 가장 작은 값을 반환합니다.
SQL>SELECT LEAST(10, 100, 5, -7) FROM DUAL;
LEAST(10,100,5,-7)
------------------
-7
UID
현재 사용자의 유일한 ID번호를 리턴합니다.
USER
현재 오라클을 사용하는 사용자를 VARCHAR2형식으로 리턴합니다.
SQL> SELECT USER, UID FROM DUAL;
USER UID
------------- ------
SCOTT 32
USERENV
USERENV 함수는 현재 세션의 환경 정보를 반환합니다.
- ENTRYID : 사용 가능한 Auditing entry Identifier를 반환합니다.
- LABEL : 현재 세션의 Label을 반환합니다.
- LANGUAGE : 현재 세션에서 사용중인 언어와 테리토리 값을 반환합니다.
- SESSIONID : Auditing(감사) Session ID를 반환 합니다.
- TERMINAL : 현재 세션 터미널의 OS ID를 반환 합니다.
SQL> SELECT USERENV('LANGUAGE') FROM DUAL;
USERENV('LANGUAGE')
------------------------
KOREAN_KOREA.KO16KSC5601
VSIZE
해당 문자의 BYTE수를 반환 합니다. 해당 문자가 NULL이면 NULL값이 반환 됩니다.
SQL> SELECT VSIZE(ename), ename
FROM emp
WHERE deptno = 30;
VSIZE(ENAME) ENAME
------------ ----------
5 ALLEN
4 WARD
6 MARTIN
5 BLAKE
sign(x)
x값이 0보다 작으면 -1, 0이면 0, 0보다 크면 1을 반환하는 함수.
결과값이 음수인지 양수인지를 판단할때 사용이 가능하다.
select sign(qty)
from table
Case-When 구문
case when (b.ipAmt/aa.lastSaleTotalAmt)*100 = d.iprate " +
then 1 " +
else d.payRate " +
end as JangRate
http://blog.naver.com/mura5802/20019026007
달 더하기
TO_Char(ADD_MONTHS(to_date('200604','YYYYMM'),-1),'YYYYMM')||'01'
마지막날 구하기
to_char(last_day(to_date('200604','YYYYMM')),'YYYYMMDD')
특정문자 뒤에서부터 추출
substr(?,INSTR(?,'-',1,2)+1)
숫자를 문자열 포맷에 맞게 문자로 변환
EX) select TO_CHAR(1234,'00099999') from dual
EX) select TO_CHAR(1234,'999,999,999,999') from dual
[출처] [본문스크랩] 오라클 내장함수 정리|작성자 메멘토
'프로그램 > DB' 카테고리의 다른 글
단일 테이블에 다중 행 입력 방법 (0) | 2009.03.16 |
---|---|
오라클 시퀀스 생성하기 (0) | 2009.03.16 |
[TOAD] 토드에서 쿼리문 자동정렬하기 (0) | 2009.02.03 |
[펌] - 오라클 내장함수 - (2) (0) | 2008.09.05 |
[펌] - SQL 자료정리 (0) | 2008.09.05 |