우선 오라클에서의 데이터 타입은 크게 숫자형, 문자형, 날짜형 으로 나눌수 있는데 이 3개는 서로 형변환 함수를 통해 각각의 타입으로 바꿀수 있다. 대표적으로는 그러나 숫자-> 날짜로는 바꿀수 없고 무조건 문자형을 거친다음 변환시켜야 한다.
간단히 도식으로 표현하자면,
숫자형 -> | ->문자형-> | -> 날짜형 |
숫자형<- | <-문자형<- | <-날짜형 |
이런식으로 변환이 이루어진다는 것이다.
차례대로
1. 숫자형 -> 문자형 : TO_CHAR()
2.문자형 -> 날짜형 : TO_DATE()
3.날짜형 -> 문자형 : TO_CHAR()
4.문자형-> 숫자형 : TO_NUMBER()
이렇게 함수가 된다. 또한 각 함수별로, 문자 포맷형식을 지정해서 그 형식에 맞는 문자/날짜/숫자 등을 변환해줄수 있는데 내가 이전 포스트에서 쓴 ALTER session set NLS_DATE_FORMAT = ' yyyy-mm-dd hh24:mm:ss'; 이 형식이 포맷팅 형식의 예이다.
각 함수별 예시.
1.숫자->문자. TO_CHAR()
select TO_char('123456789','00999,999,999.99')||'원' from dual;
--식별자: 9:0~9숫자의미 ,:1000단위콤마 .:소숫점 콤마
대신 숫자로 쓰는 포멧팅 형은 문자열 자리수 이상이어야 한다.
2. 문자->날짜. TO_DATE()
select to_date('2021-8-03 17:55:24')from dual;
처음에는 이렇게 하니 정상적으로 나오지 않고
이런 오류가 나왔다. 그래서 나는 내가 적은 이 문자가 어떤 형식으로 이루어진 건지 날짜형 포멧형식을 통해 알려줬다.
select to_date('2021-8-03 17:55:24','yyyy-mm-dd hh24:mi:ss' )from dual;
이렇게 문자열의 날짜 표현 방식을 적으니 바로 원하는 결과가 나왔다.
3. 날짜 -> 문자 TO_CHAR()
select to_char(sysdate) from dual;
그냥 이건 이렇게만 한다면, 날짜를 바로 문자열로 바꾸어 놓을수 있다.
물론 이것도 포맷팅 형식을 쓴다면 더 정교하게 표현 가능하다.
select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') from dual;
4. 문자 -> 숫자 TO_NUMBER
근데 이 케이스는 솔직히 함수를 쓰기보다. + 연산을 통해 자연스럽게 자동 형변환 시키는 경우가 많다.
select '2'+3 from dual;
select TO_NUMBER('2')+3 from dual;
이 2가지 경우 모두 숫자 5 라는 동일한 결과 출력.
공부시간 1시간.
순공시간 40분.
오늘도 오후에 통채로 어르신 모시고 동강병원 치과까지 가느라 오후공부를 아예못했다. 그래도 오늘공부한 내용은 완벽히 정리한거 같아서 기쁘다.
'기록 > SQL' 카테고리의 다른 글
GROUP BY 절의 활용과 집계함수 count, average, sum. 2021-08-09. (0) | 2021.08.09 |
---|---|
SELECT (1) : 구절 순서와 ORDER BY 함수. 2021-08-05 (0) | 2021.08.05 |
날짜 함수. 2021-08-02 (1) | 2021.08.02 |
문자열 함수 LOWER,UPPER, PAD, INSTR. 2021-07-30 (0) | 2021.07.30 |
ROWNUM을 이용한 페이징 출력, 중복제거 distinct 키워드, 문자열 자르기 SUBSTR 함수. 2021-07-29 (0) | 2021.07.29 |