SQL Server/실기 정리

SQL Server 25강 - 유니코드 없이 한글을 저장할 때 생기는 문제 (VARCHAR vs NVARCHAR)

코딩하는냥이 2025. 6. 2. 14:31
반응형

이번 강의에서는 VARCHAR와 NVARCHAR의 차이를 실습을 통해 확인했습니다.
한글과 같은 유니코드 문자를 저장할 때, 유니코드 지원 여부에 따라 어떻게 결과가 달라지는지를 비교해 보았습니다.


📌 예제 코드

-- [1] 유니코드 미지원/지원 컬럼으로 테이블 생성
CREATE TABLE unicode_table (
    col_1 VARCHAR(50),     -- 유니코드 지원하지 않음
    col_2 NVARCHAR(50)     -- 유니코드 지원
);

-- [2] 한글 문자열 저장
INSERT INTO unicode_table VALUES ('가', N'가');

-- [3] 결과 확인
SELECT * FROM unicode_table;

-- [4] 실습 테이블 제거
DROP TABLE unicode_table;

💻 실행 결과 예시

col_1 : ? / col_2 : 가

  • col_1의 결과는 한글이 제대로 저장되지 않고 물음표(?)나 깨진 문자로 표시됩니다.
  • col_2는 NVARCHAR 타입으로, 유니코드 문자열인 '가'가 정상적으로 저장됩니다.

💬 코드 설명

  • VARCHAR: 유니코드를 지원하지 않음, 한글·일본어·중국어 등 저장 시 문자 손실 발생
  • NVARCHAR: 유니코드 지원, 국제 문자 및 특수 문자 저장 가능
  • N'문자열': 유니코드 문자열 입력 시 반드시 접두사 N 필요
  • 유니코드 미지원 형식에 유니코드 데이터를 넣으면 문자 깨짐

💡 포인트 정리

  • VARCHAR: 영문 위주의 시스템에서 사용, 유니코드 문자 깨짐
  • NVARCHAR: 다국어 및 한글 저장용, 필수적으로 사용해야 함
  • 유니코드 문자열은 항상 N'' 형식으로 입력
  • 다국어 지원이 필요한 시스템은 NVARCHAR + N'' 조합 필수

📌 정리하자면, 이번 강의에서는 유니코드 미지원 형식인 VARCHAR에 한글을 저장할 경우 발생하는 문제를 실습으로 확인했습니다.
정상적으로 한글, 일본어, 중국어 등 다국어를 다루기 위해서는 반드시 NVARCHAR와 N'문자열' 형식을 사용해야 하며,
이는 글로벌 환경에서 데이터 손실을 방지하기 위한 필수 조건입니다.