TopDev

Sự khác nhau giữa CHAR và VARCHAR, NCHAR và NVARCHAR là gì?

minhdev 📖 2 phút đọc

Đây là điểm khác biệt cơ bản giữa CHAR vs VARCHARNCHAR vs NVARCHAR trong SQL Server:



1. CHAR vs VARCHAR#

Tiêu chí CHAR VARCHAR
Kiểu dữ liệu Chuỗi ký tự có độ dài cố định Chuỗi ký tự có độ dài biến đổi
Dung lượng lưu trữ Luôn chiếm đúng số ký tự đã khai báo (đệm thêm khoảng trống nếu chưa đủ) Chỉ chiếm số ký tự thực tế + 2 byte để lưu độ dài
Sử dụng Thích hợp với dữ liệu có độ dài cố định, ví dụ mã vùng, mã nhân viên có độ dài cố định Thích hợp dữ liệu có độ dài thay đổi, ví dụ tên, mô tả
Hiệu suất Tốt hơn khi độ dài cố định Tiết kiệm dung lượng khi độ dài thay đổi


2. NCHAR vs NVARCHAR#

Tiêu chí NCHAR NVARCHAR
Kiểu dữ liệu Chuỗi ký tự Unicode có độ dài cố định Chuỗi ký tự Unicode có độ dài biến đổi
Dung lượng lưu trữ Luôn chiếm 2 byte x số ký tự (cố định, đệm khoảng trống nếu thiếu) 2 byte x số ký tự thực tế + 2 byte lưu độ dài
Hỗ trợ ngôn ngữ Hỗ trợ đa ngôn ngữ, ký tự Unicode (hỗ trợ tốt tiếng Việt, tiếng Trung, tiếng Ả Rập...) Tương tự NCHAR, nhưng linh hoạt hơn về độ dài
Sử dụng Dữ liệu Unicode có độ dài cố định Dữ liệu Unicode có độ dài thay đổi
Hiệu suất Tốt cho dữ liệu cố định Tiết kiệm bộ nhớ hơn khi độ dài thay đổi


3. Tóm tắt và lưu ý#

  • CHARVARCHAR: chỉ lưu ký tự ASCII (hoặc 1 byte một ký tự) → phù hợp tiếng Anh.

  • NCHARNVARCHAR: lưu ký tự Unicode (2 byte mỗi ký tự) → hỗ trợ đa ngôn ngữ, bao gồm cả tiếng Việt.

  • Khi bạn cần lưu chuỗi tiếng Việt hoặc đa ngôn ngữ, nên dùng NCHAR hoặc NVARCHAR.

  • Khi độ dài chuỗi thay đổi, ưu tiên dùng VARCHAR hoặc NVARCHAR để tiết kiệm bộ nhớ.



Ví dụ:#

` -- CHAR(10): nếu nhập 'ABC' sẽ lưu 7 ký tự khoảng trắng đệm thêm DECLARE @c CHAR(10) = 'ABC'; -- VARCHAR(10): nếu nhập 'ABC' chỉ lưu đúng 3 ký tự DECLARE @v VARCHAR(10) = 'ABC';

-- NCHAR(10): lưu chuỗi Unicode cố định 10 ký tự DECLARE @nc NCHAR(10) = N'Xin chào';

-- NVARCHAR(10): lưu chuỗi Unicode biến đổi tối đa 10 ký tự DECLARE @nv NVARCHAR(10) = N'Xin chào'; `

Bài liên quan trong #Database

✓ Đã sao chép link