쯔이's Dev

FUNCTION(4) - 단일행 함수(형 변환 함수 - TO DATE, TO_NUMBER) 본문

SQL/함수

FUNCTION(4) - 단일행 함수(형 변환 함수 - TO DATE, TO_NUMBER)

jjhim531 2024. 8. 14. 20:18
반응형

* 문자열(VARCHAR2) : 좌측 정렬

* 숫자(NUMBER) : 우측 정렬

 

 < TO_DATE > 

숫자타입 또는 문자타입을 날짜타입으로 변경하는 함수

* 50년 미만은 자동으로 20XX으로 설정, 50년 이상은 19XX으로 설정된다.

 

[표현법]

TO_DATE( 숫자 | ' 문자 ',   '포맷' )

< 주의!! >

* 숫자는 0으로 시작할 수 없다. 예를 들어 02년이라면 2002라고 다 적어줘야한다.

* 숫자타입은 연 월 일로 인식되기에 최소한 6자리를 적어줘야한다.

* 문자타입은 포맷을 정해줘야 시, 분, 초를 표시할 수 있다.

숫자로 연월일과  시,분, 초까지 다 적어줬는데 포맷이 없거나 포맷의 종류가 부족하다면 에러가 뜬다.

숫자로 연월일 만 적고 포맷이 연월일시분초가 다 적혀있다면  00:00:00로 표시된다.

SELECT
    to_date('020505 120500')
FROM
    dual;

SELECT
    TO_DATE('020505 120500', 'YYMMDD HH24MISS')
FROM
    dual;

 

 

 < TO_NUMBER >

문자타입의 데이터를 숫자타입으로 변환시켜주는 함수

 

[표현법]

TO_NUMBER( ' 문자 ',   ' 포맷 ' )

* NUMBER는 정수, 실수 모두 가능

SELECT
    to_number('05123456789')
FROM
    dual;

문자로 인식된 0은 숫자로 변환 시 표시되지 않는다.

* 문자 데이터 중에서 숫자형식은 자동형변환이 되서 연산이 가능하다. 단, 아무런 기호 없이 ONLY 숫자!!

SELECT
    '100000' + '55000'
FROM
    dual;

* 숫자로 보이는 문자데이터에 콤마가 있으면 자동 형변환이 안된다.

SELECT
    '100,000' + '55,000'
FROM
    dual;

그러므로 각각 TO_NUMBER로 형변환 해준 후 연산이 가능하다.

SELECT
    to_number('100,000', '999,999') + to_number('55,000', '99,000')--9도 가능하고 0도 가능하다
FROM
    dual;

 

728x90
반응형