데이터베이스에서 기본적으로 제공해주는 변환 함수들이다.
✅ 개요
데이터베이스에서 데이터 유형에 대한 형변환은 두 가지 방법이 있다.
- 명시적 형변환: 변환 함수를 사용하여 데이터 유형 변환을 명시적으로 나타냄
- 암시적 형변환: 데이터베이스가 내부적으로 알아서 데이터 유형을 변환함
예를 들면,
varchar
유형의 생일
속성을 숫자와 비교할 경우, 오류가 발생하지 않고 데이터베이스가 알아서 생일
속성 유형을 varchar
→ number
유형으로 변환하여 계산한다.// 사용자가 작성한 쿼리 select 생일 from user where 생일 = 20001030; // 데이터베이스가 자동으로 변환해서 실행 select 생일 from user where TO_NUMBER(생일) = 20001030;
하지만, 암시적 형변환을 믿고 데이터 유형을 고려하지 않으면 오류가 발생하거나 성능이 저하될 수 있다. 오류가 발생하지 않더라도 예상치 못한 결과를 가져올 수 있다.
되도록이면 명시적 형변환을 사용하자 !!
✅ 1. TO_NUMBER(문자열)
문자열을 숫자형으로 변환해주는 함수이다.
TO_NUMBER('12345') -> 12345 TO_NUMBER('abcd') -> error!!!
✅ 2. TO_CHAR(수 or 날짜, [포맷]) *[]는 선택사항
수 또는 날짜형 데이터를 지정한 포맷 형식의 문자열로 변환해준다.
TO_CHAR(1234) -> '1234' TO_CHAR(SYSDATE, 'YYYY-MM-DD') -> 2024-07-25
✅ 3. TO_DATE(문자열, 포맷)
지정한 포맷 형식의 문자열을 날짜형으로 변환해주는 함수이다.
포맷형식보다 문자열이 더 길면?(형식에 맞지 않으면) 에러가 발생한다.
하지만, 포맷형식이 문자열보다 길 땐?(문자열보다 정보가 많을 때) 에러가 발생하지 않는다. 아래 예시를 참고하자.
TO_DATE('2024-07-25', 'YYYY-MM-DD') -> 2024-06-25 TO_DATE('2024-07-25', 'YYYY-MM-DD') -> 2024-07-25 TO_DATE('20241231', 'YYYY/MM/DD') -> 2024-12-31 TO_DATE('2024-12-31', 'YYYY/MM/DD') -> 2024-12-31 TO_DATE('2024/12/31', 'YYYYMMDD') -> error !!! TO_DATE('2024-12-31', 'YYYYMMDD') -> error !!!
Share article