------------------------------------------------------------
-- 데이터 형 변환 함수들
------------------------------------------------------------
-- (1) 묵시적(자동) 형 변환과 명시적(수동) 형 변환
-- 묵시적
SELECT 2 + '2'
FROM dual ;
-- 명시적
-- 아래와 동일한 효과
SELECT 2 + TO_NUMBER('2')
FROM dual ;
-- 자동으로 변환 --> 문제 발생되는 경우 발생
-- 가능한 정확한 형을 사용하는 습관 필요!!
-- (2) TO_CHAR( ) 함수 (날짜 -> 문자로 형 변환하기)
-- TO_CHAR(원래 날짜 , ‘원하는 모양’)
-- 년도
SELECT SYSDATE, TO_CHAR(SYSDATE, 'YYYY') "YYYY",
TO_CHAR(SYSDATE, 'RRRR') "RRRR",
TO_CHAR(SYSDATE, 'YY') "YY",
TO_CHAR(SYSDATE, 'RR') "RR",
TO_CHAR(SYSDATE,'YEAR') "YEAR"
FROM DUAL;
-- 월
SELECT SYSDATE, TO_CHAR(SYSDATE, 'MM'),
TO_CHAR(SYSDATE, 'MON'),
TO_CHAR(SYSDATE, 'MONTH')
FROM DUAL;
-- 일
SELECT SYSDATE, TO_CHAR(SYSDATE, 'DD'),
TO_CHAR(SYSDATE, 'DAY'),
TO_CHAR(SYSDATE, 'DDTH')
FROM DUAL;
-- 날짜 형식을 적용하여 출력하기
SELECT ENAME, TO_CHAR(SAL*12, '$999,999.99') "SAL",
TO_CHAR(HIREDATE,'RRRR-MM-DD-HH24:MI:SS') "HIREDATE",
TO_CHAR(sysdate,'YYYY-MONTH-DAY-DDTH-HH24:MI:SS') "TODAY"
FROM EMP
WHERE DEPTNO = 10 ;
-- RRRR 연도의 4자리 표기법, YYYY와 유사
-- MM --> MONTH : 월을 듯하는 이름 전체를 표시
-- DD --> DAY : 요일이 한글로 표현
-- DDTH : 몇번째 날인지 표시
-- (3) TO_CHAR 함수 (숫자형 -> 문자형으로 변환하기)
-- emp 테이블을 조회하여 이름이 'ALLEN' 인 사원의 사번과 이름과 연봉을
-- 출력하세요. 단 연봉은 (sal * 12)+comm 로 계산하고 천 단위 구분기호로 표시하세요.
SELECT EMPNO, ENAME, SAL, COMM, TO_CHAR((SAL * 12) + COMM, '999,999')
FROM EMP
WHERE ENAME= 'ALLEN';
-- professor 테이블을 조회하여 201 번 학과에 근무하는 교수들의 이름과
-- 급여, 보너스, 연봉을 아래와 같이 출력하세요. 단 연봉은 (pay*12)+bonus 로 계산합니다.
SELECT NAME, PAY, BONUS, (PAY * 12) + BONUS, TO_CHAR((PAY*12) + BONUS, '999,999.99')
FROM PROFESSOR
WHERE DEPTNO = 201;
-- 결과가 널이 나오는 이유랑 NULL 에 대해 정리 필요!!
-- (4) TO_NUMBER( ) 함수
-- TO_NUMBER(‘숫자처럼 생긴 문자’)
SELECT '3', TO_NUMBER('3')
FROM dual ;
-- 숫자로 변경 가능
-- 숫자와 문자의 경우 정렬 방법에 차이 발생
SELECT TO_NUMBER('C')
FROM dual;
-- 숫자로 변경 불가일 때 오류 발생
SELECT ASCII('C')
FROM dual;
-- (5) TO_DATE( ) 함수
-- TO_DATE(‘날짜처럼 생긴 문자’)
-- ALTER SESSION SET NLS_DATE_FORMAT='RRRR/MM/DD' ;
SELECT TO_DATE('18/12/25')
FROM dual ;