My Programing/DataBase

오라클 DB 설계 및 활용 4일째 1번째 내용

nkdk 2008. 3. 7. 19:45
금일 수업은 어제에 이어서 숫자 함수가 나갑니다.

** 숫자 함수

SELECT ROUND(45.678, 1), ROUND(45.678,-1) FROM DUAL; <- 반올림 함수

SELECT SAWON_NAME, SAWON_PAY, ROUND(SAWON_PAY*0.025) AS TEX FROM SAWON;

SELECT TRUNC(45.678), TRUNC(45.678,2) FROM DUAL; <- 버림 함수

SELECT MOD(15,2) FROM DUAL; <-- 나머지를 구하는 함수

** 날짜 함수
SELECT SYSDATE FROM DUAL; -- 오라클용(시스템 날짜 출력시킴)
SELECT MONTHS_BETWEEN('2007-03-01','2007-05-04') FROM DUAL;
( 해당 날짜에서 해당 날짜를 뺄 때 사용한다.)
SELECT ADD_MONTHS('2007-05-04', 3) FROM DUAL;
( 해당 달에서 해당 달을 더할 때 사용한다.)
SELECT LAST_DAY(SYSDATE), NEXT_DAY(SYSDATE,'금') FROM DUAL;
( 이번 달 말일 날과 이번에 다가오는 금요일을 구할 때 사용한다. )
ALTER SESSION SET NLS_LANGUAGE=ENGLISH;
( 영문으로 SYSDATE를 리턴 시키고 싶을 때 사용하는 명령어 )
SELECT LAST_DAY(SYSDATE), NEXT_DAY(SYSDATE,'FRI') FROM DUAL;
ALTER SESSION SET NLS_LANGUAGE=KOREAN;
( 한글로 SYSDATE를 리턴 시키고 싶을 때 사용하는 명령어 )
* 형변환 함수
- 자동 변환 : SELECT SAWON_PAY*0.5 FROM SAWON;
- 강제 변환 : 문자를 날짜로 바꿔주는 함수인
TO_DATE(문->날), TO_NUMBER(문->수), TO_CHAR(수,날->문)

SELECT SYSDATE -3 , SYSDATE - TO_DATE('2005-05-04','YYYY-MM-DD') FROM DUAL; (3일을 삭제하는 것과, 2005-05-04일을 날짜형으로 변환하여 뺀 값을 리턴한다)

SELECT TO_CHAR(SYSDATE,'YYYY') FROM DUAL;
(도중에 문자를 넣으려면 "" 를 써야 하기 때문에 패스~)
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') FROM DUAL;
-- 날짜 및 시간 서식
년도: YYYY, YYY, YY, YEAR, CC, SC, SYSAR, BC, AD...
분기: Q
월: MM, MONTH, MON, RM ...
주: WW, W ...
일: DD, DDD, D, DAY(요일), DY(요일), FM ....
시간: HH, HH24, HH12 AM, HH12 PM....
분: MI
초: SS(0~59), SSSS(0 ~ 86399)...

SELECT TO_CHAR(TO_DATE('2007-5-4'), 'FMDD-MONTH-RR') FROM DUAL;

-- 숫자 서식
9, 0, $, L, ,(콤마), ., MI, PR...
SELECT TO_CHAR(123, '999999'), TO_CHAR(123,'099999'), TO_CHAR(1234,'L99,999'), TO_CHAR(123.456,'999.99'), TO_CHAR(-123,'999PR'), TO_CHAR(123,'999EEEE') FROM DUAL;
(이곳에서 999EEEE의 경우 공학용으로 쓸 때인데 쓸일 없을 듯 하네요^^)

*** 기타함수(오라클 용 함수)
- NVL(VALUE1, VALUE2) : VALUE1이 NULL이면 VALUE2를 취한다.
UPDATE SAWON SET SAWON_PAY=NULL WHERE SAWON_NO=1;
SELECT * FROM SAWON;
SELECT SAWON_NO, NVL(SAWON_JIK,'임시직'), NVL(SAWON_PAY,0) FROM SAWON;

- NVL2(VALUE1, VALUE2, VALUE3) : VALUE1이 NULL인지 평가 후 NULL이면 VALUE3를, NULL이 아니면 VALUE2를 취함.
SELECT SAWON_NO, SAWON_NAME, NVL2(SAWON_JIK,'정규직','계약직') FROM SAWON;

COMMIT;

1부는 여기까지 입니다.^^