문자값을 전달받아 숫자값으로 변환하여 반환하는 함수
문자값이 숫자 형식의 문자로 구성된 경우가 아닌 경우 에러가 발생한다.
--TO_NUMBER(문자값): 강제 형변환이 일어난다.
--비교 컬럼의 자료형이 숫자형인 경우 비교값이 문자값이면 숫자값으로 변환하여 비교
SELECT EMPNO,ENAME,SAL FROM EMP WHERE EMPNO=TO_NUMBER('7839');
자동 형변환이 일어난다.
비교 컬럼의 자료형이 숫자형인 경우 비교값이 문자값이면 자동으로 숫자값으로 변환하여 비교한다.
--자동으로 형변환
SELECT EMPNO,ENAME,SAL FROM EMP WHERE EMPNO='7839';
문자값을 연산할 경우 자동으로 숫자값으로 변환되어 연산 처리한다.
SELECT 100+200 FROM DUAL;
SELECT '100'+'200' FROM DUAL;--위와 결과 같음
문자값을 전달받아 날짜값으로 변환하여 반환하는 함수
문자값이 패턴에 맞는 날짜 형식이 아닌 경우 에러가 발생한다.
기본 날짜 패턴 : RR/MM/DD
--TO_DATE(문자값) : 강제 형변환이 일어난다.
--비교 컬럼의 자료형이 날짜형인 경우 비교값이 문자값이면 날짜값으로 변환하여 비교
SELECT EMPNO,ENAME,HIREDATE FROM EMP WHERE HIREDATE=TO_DATE('82/01/23');
자동 형변환이 일어난다.
비교 컬럼의 자료형이 날짜형인 경우 비교값이 문자값이면 자동으로 날짜값으로 변환하여 비교한다.
--날짜값은 [YYYY-MM-DD] 패턴으로도 표현 가능하다.
SELECT EMPNO,ENAME,HIREDATE FROM EMP WHERE HIREDATE='1982-01-23';
TO_DATE 함수의 패턴문자를 이용하여 원하는 패턴 형식으로 문자값 변환이 가능하다.
SELECT EMPNO,ENAME,HIREDATE FROM EMP
WHERE HIREDATE=TO_DATE('01-23-1982','MM-DD-YYYY');
SELECT EMPNO,ENAME,HIREDATE,TO_DATE('2000-01-01')-HIREDATE
FROM EMP WHERE EMPNO=7844;
숫자값 또는 날짜값을 전달받아 원하는 패턴의 문자값으로 변환하여 반환하는 함수
YYYY(년),RR(년),MM(월),DD(일),HH24(시간),HH12(시간),AM(오전),PM(오후),MI(분),SS(초)
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') FROM DUAL;
SELECT EMPNO,ENAME,HIREDATE FROM EMP
WHERE TO_CHAR(HIREDATE,'YYYY')='1981';
9(숫자 또는 공백),0(숫자),L(화폐기호),$(달러)
SELECT 1000000000,TO_CHAR(1000000000,'9,999,999,990') FROM DUAL;
패턴문자가 모자란 경우 #으로 표현한다.
SELECT 10000000000,TO_CHAR(10000000000,'9,999,999,990') FROM DUAL;