1)문자열 자료
. ''로 묶인 자료
. 가변길이와 고정길이 타입으로 구분
. ' '안의 자료는 대소문자 구별
. CHAR, VARCHAR, VARCHAR2, LONG, CLOB, NVARCHAR2, NCLOB
: 고정길이 데이터타입
(사용형식)
컬럼명 CHAR (n [BYTE|CHAR])
CREATE TABLE TEMP01(
COL1 CHAR(20),
COL2 CHAR(20 BYTE),
COL3 CHAR(20 CHAR));
INSERT INTO TEMP01 VALUES('대전시 중구 오류동 846','대전시 중구 오류동 846','대전시 중구 오류동 846');
한글 8자 x 3 = 24, 6을 더하면 30 (남는공간의길이는 영문자기준으로 확보)
남는공간의 길이?
SELECT LENGTHB(COL1) AS 길이1,
SELECT LENGTHB(COL2) AS 길이2,
SELECT LENGTHB(COL3) AS 길이3
FROM TEMP01;
(사용형식)
컬럼명 VARCHAR2(n [BYTE|CHAR])
-사용은 CHAR에 준함
n은 글자수를 의미?..
CREATE TABLE TEMP02(
COL1 VARCHAR2(2000),
COL2 VARCHAR(2000 BYTE),
COL3 VARCHAR(2000 CHAR));
INSERT INTO TEMP02 VALUES('APPALE BANNA PERSIMMON', 'APPALE BANNA PERSIMMON', 'APPALE BANNA PERSIMMON');
INSERT INTO TEMP02 VALUES('IL POSTINO', '대전시 중구 오류동 846', '대전시 중구 오류동 846');
SELECT*FROM TEMP02;
SELECT LENGTHB(COL1),
LENGTHB(COL2),
LENGTHB(COL3)
FROM TEMP02;
(사용형식)
컬럼명 LONG
CREATE TABLE TEMP03(
COL1 CHAR(20000),
COL2 VARCHAR2(2000),
COL3 LONG,
COL4 LONG);
Long타입은 하나만 가능하므로 ERROR >> COL4 지워주고 실행
INSERT INTO TEMP03 VALUES('대전시 중구 오류동 846', '대전시 중구 오류동 846','대전시 중구 오류동 846');
SELECT * FROM TEMP03;
COL1만 엄청 길게 나옴
SELECT LENGTHB(COL1),
LENGTHB(COL2),
LENGTHB(COL3)
FROM TEMP03;
롱타입은 LENGTHB로 바이트 수 조절 불가능하다 (CLOB는 더 길지만 기능개선으로 ㄱㄴ해짐)
CF. 그래서 생략하고 써주면 돌아간당
최대 4GB까지 저장 가능
한 테이블에 복수개의 clob타입의 컬럼 사용가능
큰 크기 때문에 일부기능은 DBMS_LOB Api(Application Programming Interface) 지원을 받아야 사용 가능
(사용형식)
컬럼명 CLOB
CREATE TABLE TEMP04(
COL1 CLOB,
COL2 CLOB,
COL3 VARCHAR2(4000));
INSERT INTO TEMP04 VALUES('IL POSTINO','대전시 중구 오류동 846','APPLE BANNA PERSIMMON');
SELECT * FROM TEMP04;
SELECT SUBSTR(COL1,2,4),
SUBSTR(COL2,4,3),
SUBSTR(COL3,2,4)
FROM TEMP04;
🚨 순번,글자수에서 글자수, 순번으로 바뀌었으니 달라짐
SELECT SUBSTR(COL1,2,6),
DBMS_LOB.SUBSTR(COL1,2,6),
SUBSTR(COL3,2,4)
FROM TEMP04;
순서 바꿔본 결과!
SELECT DBMS_LOB.GETLENGTH(COL1),
DBMS_LOB.GETLENGTH(COL2),
DBMS_LOB.GETLENGTH(COL3)
FROM TEMP04;
🚨 LENGTHB 대신 DBMS_LOB.GETLENGTH()써줘야됨.
(LENGTHB는 글자수를 바이트로 바꾼거고 한글사용시 LENGTH가 LENGTHB보다 3배 더 작음)