Kiểu dữ liệu NVARCHAR trong SQL Server
Trong hướng dẫn này, bạn sẽ học cách sử dụng kiểu dữ liệu NVARCHAR
trong SQL Server để lưu trữ dữ liệu chuỗi Unicode có độ dài thay đổi.
Tổng quan về kiểu dữ liệu NVARCHAR trong SQL Server
Kiểu dữ liệu NVARCHAR
trong SQL Server được sử dụng để lưu trữ dữ liệu chuỗi Unicode có độ dài thay đổi. Sau đây là cú pháp của NVARCHAR
:
NVARCHAR(n)
Trong cú pháp này, n
xác định độ dài chuỗi nằm trong khoảng từ 1 đến 4.000. Nếu bạn không chỉ định độ dài chuỗi, giá trị mặc định của nó là 1.
Một cách khác để khai báo một cột NVARCHAR
là sử dụng cú pháp sau:
NVARCHAR(max)
Trong cú pháp này, max
là kích thước lưu trữ tối đa tính bằng byte là 2 ^ 31-1 byte (2 GB).
Nói chung, kích thước lưu trữ thực tế tính bằng byte của một giá trị NVARCHAR
gấp hai lần số ký tự cộng với 2 byte.
Các ISO synonym của NVARCHAR
là NATIONAL CHAR VARYING
hoặc NATIONAL CHARACTER VARYING
, vì vậy bạn có thể sử dụng chúng thay thế cho nhau trong khai báo biến hoặc định nghĩa dữ liệu cột.
VARCHAR so với NVARCHAR
Bảng sau minh họa sự khác biệt chính giữa VARCHAR
và NVARCHAR
kiểu dữ liệu:
VARCHAR |
NVARCHAR | |
---|---|---|
Kiểu dữ liệu ký tự | Các ký tự có độ dài thay đổi, không phải Unicode | Độ dài thay đổi, cả ký tự Unicode và không phải Unicode như tiếng Việt. |
Chiều dài tối đa | Lên đến 8.000 ký tự | Lên đến 4.000 ký tự |
Kích thước ký tự | Chiếm 1 byte cho mỗi ký tự | Chiếm 2 byte cho mỗi ký tự Unicode / Không phải Unicode |
Kích thước lưu trữ | Độ dài Thực tế (tính bằng byte) | 2 lần Độ dài Thực tế (tính bằng byte) |
Sử dụng | Được sử dụng khi độ dài dữ liệu là cột có độ dài thay đổi hoặc có thể thay đổi và nếu dữ liệu thực tế luôn nhỏ hơn dung lượng. | Do chỉ để lưu trữ, chỉ được sử dụng nếu bạn cần hỗ trợ Unicode như các ký tự tiếng Việt. |
Ví dụ về kiểu dữ liệu NVARCHAR trong SQL Server
Câu lệnh sau tạo một bảng mới chứa một cột kiểu NVARCHAR
:
CREATE TABLE test.sql_server_nvarchar (
val NVARCHAR NOT NULL
);
Trong ví dụ này, theo mặc định, độ dài chuỗi của cột NVARCHAR
là 1.
Để thay đổi độ dài chuỗi của cột val
, bạn sử dụng câu lệnh ALTER TABLE ALTER COLUMN
:
ALTER TABLE test.sql_server_Nvarchar
ALTER COLUMN val NVARCHAR (15) NOT NULL;
Câu lệnh sau đây INSERT một chuỗi mới vào cột val
của bảng test.sql_server_nvarchar
:
INSERT INTO test.sql_server_varchar (val)
VALUES (N'Trung Nguyễn');
Câu lệnh hoạt động như mong đợi vì giá trị chuỗi có độ dài nhỏ hơn độ dài chuỗi được xác định trong định nghĩa cột.
Câu lệnh sau cố gắng chèn một dữ liệu chuỗi mới có độ dài lớn hơn độ dài chuỗi của cột val
:
INSERT INTO test.sql_server_nvarchar (val)
VALUES (N'Trung Nguyễn - Comdy.vn');
SQL Server đã phát hành lỗi và chấm dứt câu lệnh:
String or binary data would be truncated.
The statement has been terminated.
Để tìm số ký tự và kích thước lưu trữ tính bằng byte của các giá trị được lưu trữ trong cột NVARCHAR
, bạn sử dụng hàm LEN
và DATALENGTH
như sau:
SELECT
val,
LEN(val) len,
DATALENGTH(val) data_length
FROM
test.sql_server_nvarchar;
Trong hướng dẫn này, bạn đã học cách sử dụng kiểu dữ liệu NVARCHAR
trong SQL Server để lưu trữ dữ liệu Unicode có độ dài thay đổi trong cơ sở dữ liệu.