[Database] cast to_char to_number

1. cast to_char to_number


cast는 자료형을 변환해주는 것이다. 예시를 보기 위해 아래와 같이 평균을 조회해보자

select avg(qty) from procure_procure_request
where procure_request_date like '201701%';

그러면 4.78461538461538461538461538461538461538처럼 긴 소수점 실수가 나온다. 이때 아래와 같이 cast를 써주면 정수형으로 변환해서 보여줄 수 있다.

select cast(avg(qty) as number(5)) 
from procure_procure_request
where procure_request_date like '201701%';

그러면 정수형 5가 나오는 것을 볼 수 있다. 만약 소수점 2자리 아래 실수를 보고 싶다면 number() 괄호 안에 5, 2를 추가해주면 된다.

select cast(avg(qty) as number(5, 2)) 
from procure_procure_request
where procure_request_date like '201701%';

이제 진짜 많이 쓰는 함수를 보여주겠다. 숫자를 특정 문자형식으로 바꾸는 to_char 함수이다.

select to_char(11234, '$999.999')
from dual;

저 sql문을 실행하면 결과값으로 $11,234 값이 출력되는 것을 볼 수 있다. 다른 방법으로 아래와 같이 사용하는 방법도 있다.

select to_char(11234, '$000,999')
from dual;

그러면 결과 값으로 $011,234가 출력된다. 자리값을 채우기 위해 앞에 0이 붙은 것이다. 만약 ‘$000,999’ 자리에 ‘$000,000,999’를 쓰면 결과값도 $000,011,234로 출력된다.
to_char는 실무에서 다음과 같이 날짜 형식을 바꿀 때 많이 쓰인다.

select to_char(sysdate, 'YYYYMMDD HH24:MI:SS')
from dual;

원래 select sysdate from dual;를 실행시켜보면 22/02/08 형식으로 나오는 것을 확인할 수 있다. 위의 sql문은 그런 날짜 형식을 YYYYMMDD HH24:MI:SS 형식에 맞춰 20220208 20:34:14 값으로 출력해준다. 이를 응용해서 YYYYMMDD HH24:MI:SS자리에 YYYY-MM-DD HH24:MI:SS를 쓰면 2022-02-08 20:38:30이 출력되는 것을 볼 수 있다. 마찬가지로 YYYY/MM/DD HH24:MI:SS로 변경하면 2022/02/08 20:39:24으로 형식이 변경되어 출력된다. 또한 시간 형식HH24:MI:SS에 :을 빼서 YYYY/MM/DD HH24MISS를 넣으면 2022/02/08 203050으로 나오는 것을 볼 수 있다.
to_char와 비슷하게 to_number라는 함수도 있는데 캐릭터형이나 문자열 데이터를 숫자형으로 바꿔주는 함수이다.

select to_number('1234')
from dual;

이처럼 내용은 숫자이지만 문자로 저장되어 있는 것을 숫자형으로 바꿔주는 것이다. 그러나 애초에 문자인 데이터는 이 함수를 쓸 수 없다. 아래와 같이 sql문을 작성하면 에러가 난다.

select to_number('abcd')
from dual;






© 2021.11. by 21thkafka

Powered by 21thkafka