Oracle 데이터 타입 - 문자열

2025. 2. 21. 02:07·개발/SQL

1. CHAR (고정 길이 문자열)

  • 특징:
    • 고정 길이 문자열 데이터를 저장.
    • 최대 2000바이트까지 저장 가능.
    • 지정된 길이보다 짧은 문자열이 저장되면 나머지 공간은 공백으로 채워짐.
    • 주로 기본 키나 길이가 고정된 데이터(우편번호, 주민등록번호 등)를 저장하는 데 사용.
  • 사용 형식:
    • 컬럼명 CHAR(크기 [BYTE|CHAR]);
      • 크기: 확보되는 기억 공간의 크기 (1 ~ 2000).
      • BYTE|CHAR: 생략 시 BYTE로 간주. 'CHAR'를 사용하면 '크기'는 문자 수를 의미.
      • 데이터베이스의 문자 집합에 따라 실제 저장되는 문자 수가 달라질 수 있다. 예를 들어, UTF-8 문자 집합에서는 한글 한 글자가 3바이트를 차지한다.
  • 사용 예시:
    SQL
     
     
CREATE TABLE TEMP01(
    COL1  CHAR(10),
    COL2  CHAR(10 BYTE),
    COL3  CHAR(10 CHAR)
);

INSERT INTO TEMP01(COL1,COL2,COL3)
    VALUES('SEOUL','대전시','대전시 중구 계룡로');

SELECT * FROM TEMP01;

2. VARCHAR2 (가변 길이 문자열)

  • 특징:
    • 가변 길이 문자열 데이터를 저장.
    • 최대 4000바이트까지 저장 가능.
    • 실제 문자열의 길이만큼만 저장 공간을 사용.
    • 오라클에서는 VARCHAR2 사용을 권장.
  • 사용 형식:
    • 컬럼명 VARCHAR2(크기 [BYTE|CHAR]);
      • 크기: 확보되는 기억 공간의 크기 (1 ~ 4000).
      • BYTE|CHAR: 생략 시 BYTE로 간주. 'CHAR'를 사용하면 '크기'는 문자 수를 의미.
  • 사용 예시:
    SQL
     
     
CREATE TABLE TEMP02(
    COL1 CHAR(100),
    COL2 VARCHAR2(4000),
    COL3 VARCHAR2(4000 BYTE),
    COL4 VARCHAR2(4000 CHAR)
);

INSERT INTO TEMP02 VALUES('IL POSTINO','BOYHOOD','BOYHOOD','대전시 중구 계룡로 846');

SELECT * FROM TEMP02;

SELECT LENGTHB(COL1), LENGTHB(COL2), LENGTHB(COL3), LENGTHB(COL4), LENGTH(COL4) FROM TEMP02;

3. NVARCHAR2 (가변 길이 유니코드 문자열)

  • 특징:
    • 가변 길이 유니코드 문자열 데이터를 저장.
    • 다국어 지원이 필요한 환경에서 유용하게 사용.
    • 문자 단위로 길이를 처리하므로, 다양한 문자 집합의 데이터를 일관되게 관리할 수 있다.
  • 사용 형식:
    • 컬럼명 NVARCHAR2(크기);
      • 크기: 문자 수를 의미.
  • 추가사항:
    • 데이터를 국제 표준 코드(UTF-8, UTF-16) 방식으로 저장.

4. LONG (대용량 문자열)

  • 특징:
    • 대용량 문자열 데이터를 저장.
    • 최대 2GB까지 저장 가능.
    • 오라클 초기 버전부터 제공되었지만, 현재는 CLOB 타입으로 대체되고 있다.
    • 한 테이블에 하나의 LONG 타입 컬럼만 사용할 수 있다.
    • 다양한 SQL 기능에서 제한적으로 사용.
  • 사용 형식:
    • 컬럼명 LONG;
  • 사용 예시:
    SQL
     
     
CREATE TABLE TEMP03(
    COL1 VARCHAR2(2000),
    COL2 LONG,
    COL3 VARCHAR2(3000)
);

INSERT INTO TEMP03(COL1,COL2) VALUES('IL POSTINO', 'BOYHOOD');

SELECT * FROM TEMP03;

5. CLOB (Character Large Object)

  • 특징:
    • 대용량 문자열 데이터를 저장.
    • 최대 4GB까지 저장 가능.
    • 한 테이블에 여러 개의 CLOB 타입 컬럼을 사용할 수 있다.
    • LONG 타입의 기능 개선 버전.
    • 일부 기능은 DBMS_LOB API를 사용해야 한다.
    • CLOB 데이터를 다룰 때 성능에 영향을 미칠 수 있으므로, 인덱싱, 검색, 업데이트 등의 작업을 최적화하는 방법을 고려해야 한다.
  • 사용 형식:
    • 컬럼명 CLOB;
  • 사용 예시:
    SQL
     
     
CREATE TABLE TEMP04(
    COL1 CLOB,
    COL2 CLOB,
    COL3 CLOB
);

INSERT INTO TEMP04(COL1,COL2) VALUES('무궁화 꽃이 피었습니다.', '대전시 중구 계룡로 846');

SELECT * FROM TEMP04;

SELECT LENGTH(COL2) FROM TEMP04;

SELECT DBMS_LOB.GETLENGTH(COL1) FROM TEMP04;

SELECT SUBSTR(COL1, 3, 4) AS 컬럼1, DBMS_LOB.SUBSTR(COL1,3,4) AS 컬럼2 FROM TEMP04;

데이터 타입 선택 가이드라인:

  • 고정 길이 데이터: CHAR
  • 가변 길이 데이터: VARCHAR2 또는 NVARCHAR2
  • 대용량 텍스트 데이터: CLOB

참고 사항:

  • LENGTHB() 함수는 문자열의 바이트 길이를 반환하고, LENGTH() 함수는 문자 길이를 반환.
저작자표시 비영리 변경금지 (새창열림)

'개발 > SQL' 카테고리의 다른 글

Oracle 데이터 타입 - 날짜  (0) 2025.02.21
Oracle 데이터 타입 - 숫자  (0) 2025.02.21
Oracle 11g XE scott계정 생성하기  (0) 2025.02.21
Oracle 권한 및 롤  (0) 2025.02.21
Oracle 기본 계정 및 계정관련 sql  (0) 2025.02.21
'개발/SQL' 카테고리의 다른 글
  • Oracle 데이터 타입 - 날짜
  • Oracle 데이터 타입 - 숫자
  • Oracle 11g XE scott계정 생성하기
  • Oracle 권한 및 롤
함수형 인간
함수형 인간
잘 까먹는 개발자의 두뇌 확장 장치
  • 함수형 인간
    개발 기록 노트
    함수형 인간
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 글 목록 (84)
      • 기타 (1)
      • 개발 (82)
        • Java (6)
        • Javascript (1)
        • Spring (20)
        • jQuery (0)
        • Git (0)
        • servlet (11)
        • JSP (6)
        • HTML (0)
        • CSS (10)
        • SQL (9)
        • JSTL (3)
        • Mybatis (4)
        • Design Patterns (0)
        • HTTP (2)
        • Devtools (0)
        • IntelliJ (5)
        • JDBC (1)
        • Lombok (3)
        • Logging (1)
      • 책 리뷰 (0)
  • hELLO· Designed By정상우.v4.10.3
함수형 인간
Oracle 데이터 타입 - 문자열
상단으로

티스토리툴바