개요
- 문자 데이터 타입 X
- 문자열, 숫자, 날짜, 2진 데이터 타입
(사용형식)
컬럼명 CHAR(크기[byte|char])
--생략하면 byte(default)
(사용예)
CREATE TABLE TEMP01(
COL1 CHAR(20), --20byte
COL2 CHAR(20 BYTE), --20byte
COL3 CHAR(20 CHAR)); --20char
INSERT INTO TEMP01 VALUES('대전시 중구','대전시 중구','대전시 중구');
SELECT * FROM TEMP01;
SELECT LENGTHB(COL1), --LENGTH BYTE 길이를 BYTE로 나타내시오
LENGTHB(COL2),
LENGTHB(COL3)
FROM TEMP01;
실행결과 및 해설
COL3(20CHAR)이 30byte로 나오는 이유?
사용한 바이트 : 한글5글자15BYTE+공백1BYTE = 16BYTE
남은 바이트 : 20CHAR-6CHAR(공백포함)=14CHAR=14BYTE
총 크기 16BYTE + 14BYTE = 30BYTE
(사용형식)
컬럼명 VARCHAR2(크기[BYTE|CHAR])
--생략하면 byte(default)
(사용예)
CREATE TABLE TEMP02(
COL1 VARCHAR2(100),
COL2 VARCHAR2(100 BYTE),
COL3 VARCHAR2(100 CHAR),
COL4 CHAR(100));
INSERT INTO TEMP02
VALUES('IL POSTINO', 'IL POSTINO', 'IL POSTINO', 'IL POSTINO');
SELECT * FROM TEMP02;
(*LARGE OBJECTS : 대용량)
(사용형식)
컬럼명 LONG
(사용예)
CREATE TABLE TEMP03(
COL1 LONG,
COL2 VARCHAR2(4000));
INSERT INTO TEMP03
VALUES('BANNA APPLE PERSIMMON','BANNA APPLE PERSIMMON');
SELECT * FROM TEMP03;
SELECT SUBSTR(COL2,7,5) --SUBSTR 서브스트링 7번째글자부터 5글자
FROM TEMP03;
--LONG타입은 너무 커서 서브스트링을 판단하기가 어려움
가변길이 데이터 저장
최대 4GB까지 처리 가능
한 테이블에 여러 개의 CLOB자료타입의 컬럼 사용 가능
일부 기능은 DBMS_LOB API의 지원을 받아야 사용 가능
(사용형식)
컬럼명 CLOB;
(사용예)
CREATE TABLE TEMP04(
COL1 LONG,
COL2 CLOB,
COL3 CLOB,
COL4 VARCHAR2(4000));
INSERT INTO TEMP04
VALUES ('','대전시 중구 계룡로 846','대전시 중구 계룡로 846','대전시 중구 계룡로 846'); --''=NULL
SELECT * FROM TEMP04;
SELECT DBMS_LOB.GETLENGTH(COL2),
DBMS_LOB.GETLENGTH(COL3),--CLOB는 최대 4GB라 BYTE가 너무 커서 LENGTHB로는 X. 글자수 체크는 가능하다
LENGTHB(COL4) --VARCHAR2는 BYTE체크 가능
FROM TEMP04;
SELECT SUBSTR(COL2,5,2), --중구
DBMS_LOB.SUBSTR(COL2,5,2),--전시 중구
SUBSTR(COL4,5,2) --중구
FROM TEMP04;