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

Kiểu dữ liệu NCHAR 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 NCHAR trong SQL Server để lưu trữ dữ liệu chuỗi ký tự Unicode có độ dài cố định.

Để lưu trữ dữ liệu chuỗi ký tự Unicode có độ dài cố định trong cơ sở dữ liệu, bạn sử dụng kiểu dữ liệu NCHAR trong SQL Server:

NCHAR(n)

Trong cú pháp này, n chỉ định độ dài chuỗi nằm trong khoảng từ 1 đến 4.000. Kích thước lưu trữ của một giá trị NCHAR2 * n byte.

ISO synonym của NCHARNATIONAL CHARNATIONAL CHARACTER, do đó, bạn có thể sử dụng chúng thay thế cho nhau.

Tương tự với kiểu dữ liệu CHAR, bạn chỉ sử dụng NCHAR để lưu trữ chuỗi ký tự có độ dài cố định. Nếu độ dài của các giá trị dữ liệu có thể thay đổi, bạn nên cân nhắc việc sử dụng kiểu dữ liệu VARCHAR hoặc NVARCHAR.

CHAR so với NCHAR

Sau đây là sự khác biệt chính giữa kiểu dữ liệu CHAR và NCHAR

CHAR

NCHAR

Chỉ lưu trữ các ký tự không phải Unicode. Lưu trữ các ký tự Unicode dưới dạng ký tự UNICODE UCS-2.
Cần 1 byte để lưu trữ một ký tự. Cần 2 byte để lưu trữ một ký tự.
Kích thước lưu trữ bằng kích thước được chỉ định trong định nghĩa cột hoặc khai báo biến. Kích thước lưu trữ bằng 2 lần kích thước được chỉ định trong định nghĩa cột hoặc khai báo biến.
Lưu trữ lên đến 8000 ký tự. Lưu trữ lên đến 4000 ký tự.

Ví dụ về kiểu dữ liệu NCHAR trong SQL Server

Câu lệnh sau tạo một bảng mới với một cột kiểu NCHAR:

CREATE TABLE test.sql_server_nchar (
    val NCHAR(1) NOT NULL
);

Câu lệnh INSERT sau đây chèn ký tự (あ) trong tiếng Nhật vào cột NCHAR:

INSERT INTO test.sql_server_nchar (val)
VALUES (N'あ');

Lưu ý rằng bạn phải đặt ký tự N trước các giá trị chuỗi ký tự Unicode. Nếu không, SQL Server sẽ chuyển đổi chuỗi thành mã mặc định của cơ sở dữ liệu có thể không nhận ra một số ký tự Unicode nhất định.

Nếu bạn chèn một chuỗi ký tự có độ dài lớn hơn độ dài được chỉ định trong định nghĩa cột, SQL Server sẽ xuất hiện lỗi và kết thúc câu lệnh.

Ví dụ: câu lệnh sau cố gắng chèn một chuỗi có hai ký tự vào cột val của bảng test.sql_server_nchar:

INSERT INTO test.sql_server_nchar (val)
VALUES (N'いえ'); 

SQL Server đã đưa ra thông báo lỗi sau:

String or binary data would be truncated.
The statement has been terminated. 

Để tìm số ký tự và số byte của các giá trị trong cột val, bạn sử dụng hàm LENDATALENGTH như sau:

SELECT
    val,
    len(val) length,
    DATALENGTH(val) data_length
FROM
    test.sql_server_nchar;

Đầu ra:

Ví dụ về kiểu dữ liệu NCHAR trong SQL Server

Trong hướng dẫn này, bạn đã học cách sử dụng kiểu dữ liệu NCHAR trong SQL Server để lưu trữ các chuỗi ký tự Unicode có độ dài cố định 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 *