Kiểu dữ liệu NVARCHAR trong SQL Server

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 NVARCHARNATIONAL 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 VARCHARNVARCHARkiể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 LENDATALENGTH 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.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *