전체 방문자
오늘
어제
21종
종이의 코딩 공부방
21종
  • 분류 전체보기 (174)
    • JAVA (64)
    • Springboot (46)
      • 블로그만들기 (45)
    • Database (60)
      • Oracle (60)
    • 프로젝트 3 (CELOVER) (0)
    • 개발서버 구축 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 글

최근 댓글

hELLO · Designed By 정상우.
21종

종이의 코딩 공부방

Database/Oracle

[Oracle] 함수(FUNCTION)_형 변환 함수

2023. 7. 3. 00:49

    < 형변환 함수 >


    * TO_CHAR

    숫자 타입 또는 날짜 타입의 값을 문자타입을 반환시켜주는 함수
    T0_CHAR (숫자 | 날짜, [포맷])

SELECT TO_CHAR(1234) FROM DUAL; -- '1234' 로 바뀌어 있는거임

 

SELECT TO_CHAR(1234, '99999') FROM DUAL;    -- 5칸자리 공간 확보, 오른쪽 정렬, 빈칸 공백

 

SELECT TO_CHAR(1234, '00000') FROM DUAL;

 

SELECT TO_CHAR(1234, 'L99999') FROM DUAL;   -- 현재 설정된 나라(LOCAL)의 화폐 단위로 출력

 

SELECT TO_CHAR(1234, '$99999') FROM DUAL;

 

SELECT TO_CHAR(1234, 'L99,999') FROM DUAL;

 

SELECT EMP_NAME, TO_CHAR(SALARY, 'L999,999,999')
FROM EMPLOYEE;

 

날짜 타입 => 문자타입

SELECT SYSDATE FROM DUAL;

 

SELECT TO_CHAR(SYSDATE) FROM DUAL;  -- 클릭해보면 다름

 

SELECT TO_CHAR(SYSDATE, 'HH:MI:SS') FROM DUAL;  -- HH : 12시간 형식

 

SELECT TO_CHAR(SYSDATE, 'HH24:MI:SS') FROM DUAL;  -- HH24 : 24시간 형식

 

SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD DAY DY') FROM DUAL;

 

SELECT TO_CHAR(SYSDATE, 'MON, YYYY') FROM DUAL;

 

SELECT EMP_NAME, HIRE_DATE, TO_CHAR(HIRE_DATE, 'YYYY-MM-DD')
FROM EMPLOYEE;

 

날짜 타입 => 문자타입

SELECT SYSDATE FROM DUAL;

 

SELECT TO_CHAR(SYSDATE) FROM DUAL;  -- 클릭해보면 다름

 

SELECT TO_CHAR(SYSDATE, 'HH:MI:SS') FROM DUAL;  -- HH : 12시간 형식

 

SELECT TO_CHAR(SYSDATE, 'HH24:MI:SS') FROM DUAL;  -- HH24 : 24시간 형식

 

SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD DAY DY') FROM DUAL;

 

SELECT TO_CHAR(SYSDATE, 'MON, YYYY') FROM DUAL;

 

SELECT EMP_NAME, HIRE_DATE, TO_CHAR(HIRE_DATE, 'YYYY-MM-DD')
FROM EMPLOYEE;

 

-- EX) 1990년 02월 06일 형식으로 
SELECT TO_CHAR(HIRE_DATE, 'YYYY년 MM월 DD일') FROM EMPLOYEE;   -- 얘 안됨.. 없는 포맷 제시할때는 "" 이거로 묶기
SELECT TO_CHAR(HIRE_DATE, 'YYYY"년" MM"월" DD"일"') FROM EMPLOYEE;   -- 없는 포맷 제시할때는 "" 이거로 묶기

 

-- 년도와 관련된 포맷
SELECT TO_CHAR(SYSDATE, 'YYYY'),
TO_CHAR(SYSDATE, 'YY'),
TO_CHAR(SYSDATE, 'RRRR'),   -- RR 과 YY의 차이는 TO_DATE 에서 알아보자
TO_CHAR(SYSDATE, 'RR'),
TO_CHAR(SYSDATE, 'YEAR')
FROM DUAL;

 

-- 월과 관련된 포맷
SELECT TO_CHAR(SYSDATE, 'MM'),
TO_CHAR(SYSDATE, 'MON'),
TO_CHAR(SYSDATE, 'MONTH'),
TO_CHAR(SYSDATE, 'RM')
FROM DUAL;

 

-- 일과 관련된 포맷
SELECT TO_CHAR(SYSDATE, 'DDD'), -- 올해 기준으로 오늘이 며칠째인지
TO_CHAR(SYSDATE, 'DD'), -- 월 기준으로 오늘이 며칠째인지
TO_CHAR(SYSDATE, 'D')   -- 주 기준으로 오늘이 며칠째인지
FROM DUAL;

 

-- 요일과 관련된 포맷
SELECT TO_CHAR(SYSDATE, 'DAY'), -- 월요일
TO_CHAR(SYSDATE, 'DY') -- 월
FROM DUAL;


    * TO_DATE

    숫자타입 또는 문자타입 데이터를 날짜 타입으로 변환 시켜주는 함수
    TO_DATE(숫자 | 문자, [포맷])

SELECT TO_DATE(20100101) FROM DUAL;

 

SELECT TO_DATE(100101) FROM DUAL;

 

SELECT TO_DATE(070101) FROM DUAL;   -- 에러
SELECT TO_DATE('070101') FROM DUAL; -- 첫글자 0인 경우는 문자타입으로 변경하고 해야함

 

SELECT TO_DATE('041030 143000') FROM DUAL; -- 에러
SELECT TO_DATE('041030 143000', 'YYMMDD HH24MISS') FROM DUAL; -- 포맷정해주면 됨

 

SELECT TO_DATE('140630', 'YYMMDD') FROM DUAL;   -- 2014년

 

SELECT TO_DATE('980630', 'YYMMDD') FROM DUAL;   -- 2098년 => 무조건 현재 세기로  반영 무조건 20 붙임

 

SELECT TO_DATE('980630', 'RRMMDD') FROM DUAL;   -- 1998년
-- RR : 해당 두자리 년도 값이 50 미만일 경우 현재 세기 반영, 50 이상일 경우 이전세기 반영


    * TO_NUMBER

    문자타입의 데이터를 숫자타입으로 반환시켜주는 함수
    TO_NUMBER(문자, [포맷])     => 결과값은 NUMBER 타입

SELECT TO_NUMBER('05123475') FROM DUAL; -- 0 빠져서 숫자타입으로 저장됨

 

SELECT '10000000' + '55000' FROM DUAL;  --> 오라클에서는 자동형변환 잘 돼 있음;

 

SELECT '10,000,000' + '55,000' FROM DUAL;  --> 오류남!! 안에 숫자만 있어야 자동형변환 된다.

 

 

SELECT TO_NUMBER('10,000,000', '99,999,999') + TO_NUMBER('55,000','99,999') FROM DUAL;

    'Database/Oracle' 카테고리의 다른 글
    • [Oracle] 함수(FUNCTION)_선택 함수
    • [Oracle] 함수(FUNCTION)_NULL 처리 함수
    • [Oracle] 함수(FUNCTION)_날짜 처리 함수
    • [Oracle] 함수(FUNCTION)_숫자 처리 함수
    21종
    21종
    코딩 공부한 것 정리하려고 만든 블로그

    티스토리툴바