2010-02-26 35 views
5

Bắt đầu từ SQL 2005, VARCHAR (MAX) không còn giới hạn ở 8000 byte, thay vào đó nó có thể lên tới 2GB bằng cách sử dụng các trang "tràn".Tôi có thể đặt kích thước VARCHAR lớn hơn 8k nhưng nhỏ hơn MAX không?

Nhưng nếu tôi muốn giới hạn cột này để nói, 10k byte thì sao? Có vẻ như tôi nhận được một lỗi nếu tôi cố gắng để đặt bất cứ điều gì trong tham số kích thước trên 8000. Đó là lẻ vì MAX là giống như yêu cầu cho một giới hạn 2GB. Có vẻ như đó là một loại "tất cả hoặc không có gì" khi nói đến kích thước tối đa.

Mọi cách xung quanh vấn đề này?

Trả lời

3

Không, bạn không thể thực hiện việc này [trực tiếp]. Giá trị này là 0-8000 hoặc MAX.

Cố gắng để sử dụng nói 10000 sẽ cung cấp cho:

The size (10000) given to the type 'varchar' exceeds the maximum allowed for any data type (8000). 

Bạn tuy nhiên có thể sử dụng một cột VARCHAR (MAX) với một contraint CHECK. Một cái gì đó như:

CHECK (DATALENGTH([myBigColumn]) <= 10000) 
8

Không, bạn không thể. hoặc varchar (< = 8000) hoặc varchar (MAX), không có gì ở giữa.

Bạn có thể làm mặc dù điều này:

CREATE TABLE [dbo].[VarChar10000] ([VarChar10000] VARCHAR(MAX)) 
GO 

ALTER TABLE [dbo].[VarChar10000] 
    ADD CONSTRAINT [MaxLength10000] 
    CHECK (DATALENGTH([VarChar10000]) <= 10000) 
GO 

Kiểm tra here.

Các vấn đề liên quan