[Oracle] 단일함수 - 변환함수

chael_lo·2021년 6월 30일
0

Oracle

목록 보기
11/17

TO_NUMBER(문자값)

문자값을 전달받아 숫자값으로 변환하여 반환하는 함수
문자값이 숫자 형식의 문자로 구성된 경우가 아닌 경우 에러가 발생한다.

--TO_NUMBER(문자값): 강제 형변환이 일어난다.
--비교 컬럼의 자료형이 숫자형인 경우 비교값이 문자값이면 숫자값으로 변환하여 비교 
SELECT EMPNO,ENAME,SAL FROM EMP WHERE EMPNO=TO_NUMBER('7839');

TO_NUMBER를 사용하지 않을 경우

자동 형변환이 일어난다.
비교 컬럼의 자료형이 숫자형인 경우 비교값이 문자값이면 자동으로 숫자값으로 변환하여 비교한다.

--자동으로 형변환
SELECT EMPNO,ENAME,SAL FROM EMP WHERE EMPNO='7839';

문자값을 연산할 경우 자동으로 숫자값으로 변환되어 연산 처리한다.

SELECT 100+200 FROM DUAL;
SELECT '100'+'200' FROM DUAL;--위와 결과 같음

TO_DATE(문자값)

문자값을 전달받아 날짜값으로 변환하여 반환하는 함수
문자값이 패턴에 맞는 날짜 형식이 아닌 경우 에러가 발생한다.
기본 날짜 패턴 : RR/MM/DD

--TO_DATE(문자값) : 강제 형변환이 일어난다.
--비교 컬럼의 자료형이 날짜형인 경우 비교값이 문자값이면 날짜값으로 변환하여 비교
SELECT EMPNO,ENAME,HIREDATE FROM EMP WHERE HIREDATE=TO_DATE('82/01/23');

TO_DATE를 사용하지 않을 경우

자동 형변환이 일어난다.
비교 컬럼의 자료형이 날짜형인 경우 비교값이 문자값이면 자동으로 날짜값으로 변환하여 비교한다.

--날짜값은 [YYYY-MM-DD] 패턴으로도 표현 가능하다.
SELECT EMPNO,ENAME,HIREDATE FROM EMP WHERE HIREDATE='1982-01-23';

TO_DATE(문자값,패턴문자)

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;

TO_CHAR({숫자값|날짜값},패턴문자)

숫자값 또는 날짜값을 전달받아 원하는 패턴의 문자값으로 변환하여 반환하는 함수

날짜패턴문자

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;

profile
천천히 꾸준히

0개의 댓글