basic/sql

SQL[05] - 형변환 함수(숫자,문자,날짜 서로 형변환 하기), 오라클의 데이터 타입, 오라클 숫자 표현식

못지(Motji) 2021. 5. 31. 18:03

*오라클 oracle 기준


오라클의 데이터 타입

  • char(n) : n만큼의 고정길이 문자 저장. 최대 200byte 
  • varchar2(n) : n만큼의 변하는 길이의 문자 저장. 최대 4000byte
  • number(p, s) : 숫자. p는 전체 자릿수 1~38, s 소수점이하 자리수 -84~127. 매개변수 생략가능
  • date : 날짜 타입 7byte 
  • long : 가변길이 문자 저장. 최대 2gb. 많이 쓰이진 않음
  • clob : 가변길이 문자 저장. 최대 4gb
  • raw(n) : 원시 이진 데이터로. 최대 2000byte
  • long raw(n) : 2gb
  • bfile : 외부파일에 저장된 데이터로 최대 4gb

형변환 함수

1. 자동형변환

2. 명시적형변환

  • TO_CHAR(숫자) : 숫자 > 문자, 날짜 > 문자
  • TO_NUMBER('문자') : 문자 > 숫자
  • TO_DATE('날짜형태문자') : 문자 > 날짜

#TO_CHAR(숫자) : 날짜 > 문자

* 날짜를 표현하는 방법

날짜 표현방법
연도 YYYY / YY / YEAR (년도의 영어이름 전체표시)
MM (숫자 두자리) / MONTH / MON
DD / DAY / DDTH (올해의 몇번째 주에 해당하는지)
시간 HH24 / HH
MI
SS

TO_CHAR() : 숫자 > 문자

* 오라클 숫자 표현식

표현식 설명
9 9의 개수만큼 자릿수 표현
0 빈자리를 0으로 채움
$ $표시를 붙혀서 표시
. (온점) 소수점 이하
, (쉼표) 천단위 구분기호 표시

 

⌨ 자동형변환과 문자>숫자 명시적형변환

숫자 + 문자인 숫자를 연산하면 자동형변환이 된다.

SELECT 2 + '2' FROM dual; -- 자동형변환 --#1
SELECT 2, to_number('2') FROM dual; -- 문자2를 명시적 형변환 해준것 --#2

⌨ 날짜 > 문자로 변환해보기

원하는 문자출력 형식을 넣으면 그대로 변환하여 출력이 가능하다 (Ex) YYYY-MM-DD...)

SELECT SYSDATE,
TO_CHAR(SYSDATE,'YYYY') "YYYY",
TO_CHAR(SYSDATE,'RRRR') "RRR",
TO_CHAR(SYSDATE,'YY') "YY",
TO_CHAR(SYSDATE,'RR') "RR",
TO_CHAR(SYSDATE,'YEAR') "YEAR" FROM DUAL; --#1

SELECT SYSDATE,
TO_CHAR(SYSDATE,'MM') "MM",
TO_CHAR(SYSDATE,'MON') "MON",
TO_CHAR(SYSDATE,'MONTH') "MONTH" FROM DUAL; --#2

SELECT SYSDATE,
TO_CHAR(SYSDATE,'DD') "DD",
TO_CHAR(SYSDATE,'DAY') "DAY",
TO_CHAR(SYSDATE,'DDTH') "DDTH" FROM DUAL; --#3

SELECT SYSDATE,
TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS') FROM DUAL; --#4

⌨ 문자 > 날짜

∙ TO_DATE('날짜형태의 문자')

SELECT TO_DATE('21/05/28') FROM DUAL;

⌨ 숫자를 오라클 숫자표현식을 사용하여 출력해보기

SELECT TO_CHAR(1234,'99999') FROM DUAL; --#1 -- 앞에 공백이 두칸 생겨서 나옴
SELECT TO_CHAR(1234,'099999') FROM DUAL; --#2
SELECT TO_CHAR(1234,'$9999.99') FROM DUAL; --#3
SELECT TO_CHAR(12345,'99,999') FROM DUAL; --#4