Trong SQL Server, SET TEXTSIZE
câu lệnh chỉ định kích thước của varchar (max) , nvarchar (tối đa) , varbinary (max) , văn bản , ntext và hình ảnh dữ liệu được trả về bởi một SELECT
tuyên bố.
Microsoft khuyên rằng văn bản , ntext và hình ảnh sẽ bị xóa trong phiên bản SQL Server trong tương lai, vì vậy bạn nên tránh sử dụng các loại dữ liệu này trong công việc phát triển mới và lên kế hoạch sửa đổi các ứng dụng hiện đang sử dụng chúng để sử dụng varchar (max) , nvarchar (tối đa) hoặc varbinary (max) thay vào đó.
Ví dụ 1 - Cách sử dụng cơ bản
Đây là một ví dụ về cách đặt TEXTSIZE
giá trị.
ĐẶT TEXTSIZE 2048;
Điều đó đặt TEXTSIZE
đến 2048 byte.
Ví dụ 2 - Kiểm tra Giá trị TEXTSIZE
Bạn có thể kiểm tra TEXTSIZE
hiện tại giá trị bằng @@TEXTSIZE
:
CHỌN @@ TEXTSIZE AS [Kích thước văn bản];
Kết quả:
+ ------------- + | Kích thước văn bản || ------------- || 2048 | + ------------- +
Ví dụ 3 - Nó ảnh hưởng như thế nào đến Kết quả Truy vấn
Dưới đây là một ví dụ minh họa cách TEXTSIZE
giá trị có thể ảnh hưởng đến kết quả trả về trong SELECT
truy vấn.
Trước tiên, hãy tạo một bảng, chèn một số văn bản, sau đó chọn nó.
SỬ DỤNG Kiểm tra; TẠO BẢNG TextSizeTest (varchar50 varchar (50), varcharMax varchar (max), nvarcharMax nvarchar (max)); CHÈN VÀO TextSizeTestVALUES ('Quả thanh long', 'Quả thanh long', 'Quả thanh long'); CHỌN * TỪ TextSizeTest;
Kết quả (bình thường):
+ ------------- + -------------- + --------------- + | varchar50 | varcharMax | nvarcharMax || ------------- + -------------- + --------------- || Quả thanh long | Quả thanh long | Quả thanh long | + ------------- + -------------- + --------------- +Đây là những gì chúng tôi thường mong đợi. Nó trả về toàn bộ văn bản bên trong mỗi cột vì mỗi hàng văn bản chiếm ít hơn 2048 byte (đó là những gì tôi đặt
TEXTSIZE
trong ví dụ trước).Nhưng đây là điều sẽ xảy ra nếu tôi giảm
TEXTSIZE
giá trị:SET TEXTSIZE 4; CHỌN * TỪ TextSizeTest;Kết quả:
+ ------------- + -------------- + --------------- + | varchar50 | varcharMax | nvarcharMax || ------------- + -------------- + --------------- || Quả thanh long | Kéo | Tiến sĩ | + ------------- + -------------- + --------------- +Cột đầu tiên không bị ảnh hưởng vì nó không phải là cột "tối đa". Ý tôi là, đó là varchar (50) chứ không phải varchar (max) .
TEXTSIZE
tùy chọn chỉ ảnh hưởng đến các cột được xác định bằngmax
.Cột thứ hai trả về bốn ký tự đầu tiên. Điều này là do chúng tôi đặt
TEXTSIZE
giá trị thành 4 và bốn ký tự đầu tiên đang sử dụng 4 byte.Cột thứ ba chỉ trả về 2 ký tự đầu tiên. Điều này là do đó là nvarchar cột. Trong trường hợp này, hai ký tự đầu tiên sử dụng 4 byte.
Ví dụ 4 - Đặt lại giá trị
Một điều cần lưu ý là chỉ định
SET TEXTSIZE 0
thực sự "đặt lại" nó về giá trị mặc định là 4096.ĐẶT TEXTSIZE 0; CHỌN @@ TEXTSIZE NHƯ [@@ TEXTSIZE]; CHỌN * TỪ TextSizeTest;Kết quả:
+ -------------- + | @@ TEXTSIZE || -------------- || 4096 | + -------------- + (1 hàng bị ảnh hưởng) + ------------- + ------------ - + --------------- + | varchar50 | varcharMax | nvarcharMax || ------------- + -------------- + --------------- || Quả thanh long | Quả thanh long | Quả thanh long | + ------------- + -------------- + --------------- + (1 hàng bị ảnh hưởng)