2016년 1월 25일 월요일

[oracle]함수 (데이터변환함수)

to_date() : 문자형 데이터를 날짜형으로 변환한다.

예)
insert into ec_order (order_no, order_id, product_code, order_qty, csel, cmoney, cdate , mdate , gubun)
values ('test', 'usko','TV03', 2,'현급입금', 50000, to_date('2002:02:22', 'YYYY:MM:DD'), to_date('2002/02/22 22:22:22', 'YYYY/MM/DD HH24:MI:SS'),'미결재');


결과)

test usko TV03 2 현급입금 50000 2002/02/22 00:00:00 2002/02/22 22:22:22 미결재

데이터가입력이 되었다.

*주의
사용자세션에 date foramt 이 YY/MM/DD 일 경우
insert 또는 select 시 ro_date() 함수에서 변환 형식을 YY-MM-DD로 바꾸어도
입출력이 YY/MM/DD 로 처리가 된다. 결국 현제 사용자 세션 nls_date_format 에 자동으로 적용되므로 참고하자.

*사용자 세션 date format 변경법
alter session set nls_date_format = 'YYYY/MM/DD';
alter session set nls_date_format = 'YYYY/MM/DD HH24:MI:SS';
등등

*일반 적으로 db에 날짜 정보를 출력할때는 문자형으로 변환하여 출력하는것이 좋다.


to_char() : 숫자나 날짜형 데이터를 문자형 데이터로 변환한다.

날짜를 문자로 변경할때...

예)
먼저 날짜형 형식을 YYYY-MM-DD 로 변환한다.
alter session set nls_date_format = 'YYYY-MM-DD';
1990/06/23 처럼 출력하되 format을 변경하지않고 문자형으로 출력해야될경우

select to_char(current_date,'YYYY/MM/DD') from dual;

결과)
2016/01/26

format 에 상관없이 문자형데이터로 출력되었다 문자형 데이터이므로 문자형 함수의 사용도 가능하다.

예) select CONCAT(to_char(current_date,'YYYY/MM/DD'),' 생년월일') from dual;

결과)
2016/01/26 생년월일

*참고 : 문자형 함수와 날짜형 함수는 서로 형변환이 자동으로 이루지는 경우가 있다.

숫자를 문자로 변경할때...

형식요소

9 :  자리수를 지정
0 :  0으로 채운다
.  :  소수점추가
,  :  천만단위마다 , 추가
$ :  화폐단위 표시
L :  국가별 화폐단위 표시
EEEE : 지수형태로 표시
S : 부호 표시
B : 공백으로 채움


예)select to_char(123123,'000999999') from dual;

결과) 000123123


예)select to_char(123123,'999999') from dual;

결과) 123123

예)select to_char(123123,'0999')from dual;

결과)#####

형식요소보다 변환하고자 하는 숫자데이터의 자리수가 많은경우 표현이 되지않는다.
적을 경우는 생략된다.

예)select to_char(123123,'9999.99') from dual;

결과)#####

소수점 표현형식을 사용했지만 실수형 데이터가 아니면 표현이 안된다.

결국 바꾸고자 하는 숫자의 형태에 따라 그에 맞는 형식요소를 대입해주어야 정상적인 값이 출력된다.

to_number() : 문자형 데이터를 숫자형 데이터로 변환한다.

위와 반대로 문자를 숫자로 변형하고자 할때

같방법인데 거꾸로 함수가 적용된다고 생각하면된다

예) $123.23 데이터를 숫자로 바꾸기

select to_number('$123.45','$999.99') from dual;

결과)
123.45

댓글 없음:

댓글 쓰기

[lunux]리눅스 폴더별 용량 확인

리눅스 폴더별 용량 확인 조회 하고자 하는 디렉토리 리스트가있는 경로로 이동후 du -h --max-depth=1