Kiểu dữ liệu CHAR 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 CHAR
trong SQL Server để lưu trữ các chuỗi ký tự không phải Unicode có độ dài cố định trong cơ sở dữ liệu.
Tổng quan về kiểu dữ liệu CHAR trong SQL Server
Nếu bạn muốn lưu trữ dữ liệu chuỗi có độ dài cố định, không phải Unicode, bạn sử dụng kiểu dữ liệu CHAR
SQL Server:
CHAR(n)
Trong cú pháp này, n
chỉ định độ dài chuỗi nằm trong khoảng từ 1 đến 8.000.
Vì n
là tùy chọn, nếu không chỉ định nó trong định nghĩa dữ liệu hoặc câu lệnh khai báo biến, giá trị mặc định của nó là 1.
Bạn chỉ nên sử dụng kiểu dữ liệu CHAR
khi kích thước của các giá trị trong cột được cố định.
Khi bạn INSERT một giá trị chuỗi vào một cột kiểu CHAR
. Nếu độ dài của giá trị chuỗi nhỏ hơn độ dài được chỉ định trong cột, SQL Server sẽ thêm khoảng trắng ở cuối giá trị chuỗi vào độ dài được khai báo trong cột. Tuy nhiên, khi bạn chọn giá trị chuỗi này, SQL Server sẽ loại bỏ các dấu cách ở cuối trước khi trả lại.
Mặt khác, nếu bạn chèn một giá trị có độ dài vượt quá độ dài cột, SQL Server sẽ đưa ra thông báo lỗi.
Lưu ý rằng ISO synonym của
CHAR
làCHARACTER
vì vậy bạn có thể sử dụng chúng thay thế cho nhau.
Ví dụ về kiểu dữ liệu CHAR trong SQL Server
Câu lệnh sau tạo một bảng mới có chứa một cột kiểu CHAR
:
CREATE TABLE test.sql_server_char (
val CHAR(3)
);
Lưu ý rằng nếu bạn không có lược đồ
test
trong cơ sở dữ liệu, bạn có thể tạo nó bằng cách sử dụng câu lệnh sau trước khi tạo bảngsql_server_char
:
CREATE SCHEMA test;
GO
Để chèn một chuỗi ký tự có độ dài cố định vào cột kiểu CHAR
, bạn sử dụng câu lệnh INSERT
như sau:
INSERT INTO test.sql_server_char (val)
VALUES ('ABC');
Câu lệnh đã hoạt động như mong đợi.
Câu lệnh sau cố gắng chèn một chuỗi ký tự mới có độ dài vượt quá độ dài cột:
INSERT INTO test.sql_server_char (val)
VALUES ('XYZ1');
SQL Server sẽ thông báo lỗi sau:
String or binary data would be truncated.
The statement has been terminated.
Câu lệnh sau sẽ chèn ký tự ‘A’ vào cột val
của bảng test.sql_server_char
:
INSERT INTO test.sql_server_char (val)
VALUES ('A');
Trong SQL Server, hàm LEN
trả về số ký tự trong một cột được chỉ định loại trừ các khoảng trắng ở cuối và hàm DATALENGTH
trả về số byte.
Xem câu lệnh sau:
SELECT
val,
LEN(val) len,
DATALENGTH(val) data_length
FROM
sql_server_char;
Đầu ra:

Mặc dù ký tự ‘A’ chỉ là một ký tự, số byte của cột được cố định là ba.
Trong hướng dẫn này, bạn đã học cách sử dụng kiểu dữ liệu CHAR
trong SQL Server để lưu trữ các chuỗi ký tự không phải Unicode có độ dài cố định trong cơ sở dữ liệu.