DUAL 테이블 - DUMMY 테이블 (계산식을 사용할때 사용하는 아무것도 없는 테이블)
숫자함수
ROUND : 반올림해주는 함수이다. ROUND( 값, 반올림 지점) 형식으로 쓰인다.
ex) ROUND(98.765, 2) = 98.77 // ROUND(98.765 , -1) = 100
TRUNC : 버림함수이다. 지정한 자리수 이하를 버림한다.
TRUNC(값 , 버림지점)형식으로 쓰인다.
ex) TRUNC(98.765, 2) = 98.77 // TRUNC (98.765 , -1) = 90
MOD : 나머지를 구하는 함수이다. MOD(값 , 나눌수)형식으로 쓰인다.
ex) MOD(12, 5) = 2 // MOD(10, 5) = 0
문자함수
UPPER - 대문자로 변환시킨다. ex) UPPER(sad) ------ 출력시 SAD
LOWER - 소문자로 변환시킨다. ex) LOWER(select) ------ 출력시 SELECT
INITCAP - 이니셜만 대문자로 변환시킨다. ex) INITCAP(mir) ------ 출력시 Mir
LENGTH - 문자열의 길이를 알려준다. ex) LENGTH(mir) ------ 출력시 3
INSTR - 특정문자가 출현하는 위치를 알려준다.
INSTR( [검색할곳], [특정문자], [검색시작위치], [결과선택] ) 형식으로 쓰인다.
ex) select instr('Welcome to Oracle 10g' , 'o', 3, 2) -> 출력시 10위 Welcome to Oracle 10g에서 o를 검색할때 3번째 자릿수부터 검색을 시작해서
두번째 발견된 'o'의 위치를 출력하라는 뜻이다.
공백값(스페이스)도 자릿수에 포함된다는거 까먹지 말자!
SUBSTR - 문자의 일부분을 추출한다.
SUBSTR( [추출할곳], [추출시작위치], [추출글자수] ) 형식으로 쓰인다.
ex) select substr("run and fly", 5, 3) ->출력시 and
LPAD - 오른쪽 정렬 후 왼쪽에 생긴 빈 공백에 특정 문자를 채운다.
RPAD - 왼쪽 정렬 후 오른쪽에 생긴 빈 공백에 특정 문자를 채운다.
LPAD,RPAD ( [정렬할곳], [정렬자릿수], [채워넣을문자] ) 형식으로 쓰인다.
ex) select rpad(ename, 10, 'is win') from emp;
ex) select rpad(ename, 10, 'is win') from emp;
LTRIM - 왼쪽에서 특정 문자를 삭제한다.
RTRIM - 오른쪽에서 특정 문자를 삭제한다.
LTRIM,RTRIM( [삭제될값], [삭제할특정문자] ) 형식으로 쓰인다.
ex) 'aaaOracle 10gaaa' 라는 글에서 앞뒤로 'a'를 지워보자.
select LTRIM('aaaOracle 10gaaa', 'a') from dual;ex) 'aaaOracle 10gaaa' 라는 글에서 앞뒤로 'a'를 지워보자.
TRIM - 앞,뒤에서 특정 문자를 삭제한다.
위 RTRIM과 LTRIM의 특성을 합친것이라고 보면된다.
하지만 형식이 약간 다른데
TRIM( [삭제할특정문자] from [삭제될값] ) 형식으로 쓰인다.
하지만 형식이 약간 다른데
TRIM( [삭제할특정문자] from [삭제될값] ) 형식으로 쓰인다.
ex) 'aaaOracle 10gaaa' 라는 글에서 앞뒤로 'a'를 지워보자.
select trim('a' from 'aaaOracle 10gaaa') from dual;
select trim('a' from 'aaaOracle 10gaaa') from dual;
날짜함수
SYSDATE - 시스템에 저장된 현재 DATE를 출력한다.
SYSDATE - 시스템에 저장된 현재 DATE를 출력한다.
ex) select SYSDATE from dual -> 출력시 11/08/25 (포스트쓰고 있는날짜가 8/25이다.)
MONTHS_BETWEEN - DATE와 DATE사이의 개월수를 계산한다.
date - date = '몇일'
MONTHS_BETWEEN(date, date) = '몇개월'
ex) 현재날짜부터 100일이 지난 날짜 구하기
MONTHS_BETWEEN(date, date) = '몇개월'
ex) 현재날짜부터 100일이 지난 날짜 구하기
ADD_MONTHS - DATE에 개월을 더한 DATE를 계산한다.
ex) select ADD_MONTHS(sysdate, 6) from dual; -> 출력시 12/2/25
LAST_DAY - 월의 마지막 DATE를 계산한다.
ex) select LAST_DAY(sysdate) from dual; -> 출력시 11/8/31
NEXT_DAY - 해당 date를 기준으로 명시된 요일에 해당하는 날짜를 반환한다.
ex) select NEXT_DAY(sysdate, '금') from dual; -> 출력시 11/8/26
형변환함수
TO_DATE - 문자열을 날짜 형으로 변환한다. TO_DATE('문자', 'format형식')
TO_DATE - 문자열을 날짜 형으로 변환한다. TO_DATE('문자', 'format형식')
ex) select to_date('1986/12/12', 'yyyy/mm/dd') from dual;
-> 문자를 변환하는것이기 때문에 '(홑따옴표)를 꼭 써줘야 한다.
-> 홑따옴표를 안쓰면 1986나누기 12나누기 12(숫자형태)로 인식한다.
-> 포멧형식에 맞는 문자를 집어 넣어야 한다.
-> 문자를 변환하는것이기 때문에 '(홑따옴표)를 꼭 써줘야 한다.
-> 홑따옴표를 안쓰면 1986나누기 12나누기 12(숫자형태)로 인식한다.
-> 포멧형식에 맞는 문자를 집어 넣어야 한다.
TO_NUMBER - 문자형을 숫자형으로 변환한다.
쓸일이 별로 없다..;; 심지어 책에 예제도 안나온다;;
TO_CHAR - 날짜나 숫자형을 문자로 변환한다. TH_CHAR(date | number, 'format형식' )
날짜 format형식
YYYY | 년도 표현(4자리) |
YY | 년도 표현(2자리) |
MM | 월을 숫자로 표현 |
MON | 월을 알파벳으로 표현 |
DAY | 요일 표현 |
DY | 요일을 약어로 표현 |
시간 format형식
AM/PM | 오전,오후 표시 |
HH/HH12 | 시간(1~12) |
HH24 | 시간(0~23) |
MI | 분을 표현 |
SS | 초를 표현 |
9 | 한자리의 숫자 표현 | ex) (1111, '99999') -> 1111 |
0 | 앞부분을 0으로 표현 | ex) (1111, 099999') -> 001111 |
$ | 달러 기호를 앞에 표현 | ex) (1111, '$99999') -> $1111 |
. | 소수점을 표시 | ex) (1111, '99999,99) -> 1111.00 |
, | 특정 위치에 , 표시 | ex) (1111, '99,999) -> 1,111 |
MI | 오른쪽에 -기호 표시 | ex) (1111, '99999MI) -> 1111- |
PR | 음수값을 <>으로 표현 | ex) (1111, '99990PR) -> <1111> |
EEEE | 과학적 표기법으로 표현 | ex) (11, '9.9EEEE') -> 1.1E +01 |
V | 10ⁿ을 곱한값으로 표현 | ex) (1111, '999V99') -> 111100 |
B | 공백을 0으로 표현 | ex) (1111, 'B9999.99') -> 1111.00 |
L | 지역 통화를 표현 | ex) (1111, 'L9999) -> ₩1111 |
NULL변환 함수
NVL - null값을 0또는 다른 값으로 변환하기 위해 사용하는 함수이다.
이전에 comm을 더하는식에서 comm이 null값이여서 출력값도 null값이 였던 것을 보며
null의 특성을 배웠다.NVL을 사용하면 null값을 0 또는 다른 값으로 변환할수 있기때문에 출력값이 null이 아닌
정상적인 출력값으로 바꿀수 있다.
조건 함수
DECODE - C언어의 else if 구문과 같은 역활을 한다.
조건을 주고 난뒤 그 조건과 일치하는 값을 출력한다.
ex)부서번호에 따른 부서명 출력하기
DECODE - C언어의 else if 구문과 같은 역활을 한다.
조건을 주고 난뒤 그 조건과 일치하는 값을 출력한다.
ex)부서번호에 따른 부서명 출력하기
select ename, deptno,
DECODE( -> DECODE함수를 선언하였다.
deptno, 10, 'ACCOUNTING', -> 부서번호(deptno)가 10일때 ACCOUNTING
20, 'RESEARCH', -> 20일때 RESEARCH
30, 'SALES', -> 30일때 SALES
40, 'OPERATIONS') dname -> 40일때 OPERATIONS를 부서명(dname)으로 출력한다.
from emp;
CASE- DECODE문과 같이 조건을 주고 난뒤 그 조건과 일치하는 값을 출력한다.
하지만 다른점이 있다면 DECODE문은 조건을 줄때 조건과 같은(=)만 할수 있으며
CASE문은 연산자를 사용하여 조건을 범위로 지정할수도 있다. 아래 예제를 보자
ex)부서번호에 따른 부서명 출력하기
select ename, deptno,
CASE when deptno = 10 then 'ACCOUNTING'
when deptno = 20 then 'RESEARCH'
when deptno = 30 then 'SALES'
when deptno = 40 then 'OPERATIONS'
END AS dame
from emp;
좋은 블로그에서 퍼온글 ㅎㅎ
<embed src="http://api.v.daum.net/static/recombox1.swf?nid=19905378&m=1" quality="high" bgcolor="#ffffff" width="400" height="80" type="application/x-shockwave-flash"></embed>
댓글 없음:
댓글 쓰기