Các ký tự tối đa cho NVARCHAR (MAX) là gì?


Câu trả lời:


412

Kích thước tối đa cho một cột loại NVARCHAR(MAX) là 2 GByte lưu trữ.

NVARCHARsử dụng 2 byte cho mỗi ký tự, đó là khoảng. 1 tỷ ký tự.

Chiến tranh và Hòa bình của Leo Tolstoj là một cuốn sách dài 440 trang, chứa khoảng 600'000 từ - có thể là 6 triệu ký tự - được làm tròn. Vì vậy, bạn có thể dán khoảng 166 bản sao của toàn bộ cuốn sách Chiến tranh và Hòa bình vào mỗi NVARCHAR(MAX)cột.

Có đủ không gian cho nhu cầu của bạn? :-)


17
Chỉ là một lựa chọn nit. NVARCHAR sử dụng 2 byte cho hầu hết các ký tự. Đối với ký tự unicode trên U + 00FFFF. Nó sẽ sử dụng bốn byte.
Eli Algranti

7
Đây là sự điên rồ vượt trội.
MisterGeeky

1
PostgreSQL tương đương với NVCHAR (MAX) là gì?
Pratik

63

Theo mặc định, các giá trị nvarchar (MAX) được lưu trữ chính xác giống như các giá trị nvarchar (4000), trừ khi độ dài thực tế vượt quá 4000 ký tự; trong trường hợp đó, dữ liệu liên tiếp được thay thế bằng một con trỏ tới một hoặc nhiều trang riêng biệt nơi dữ liệu được lưu trữ.

Nếu bạn dự đoán dữ liệu có thể vượt quá 4000 ký tự, nvarchar (MAX) chắc chắn là lựa chọn được đề xuất.

Nguồn: https://social.msdn.microsoft.com/Forums/en-US/databasedesign/thread/d5e0c6e5-8e44-4ad5-9591-20dc0ac7a870/


12
Nó cũng KHÔNG được đề xuất nếu dữ liệu của bạn sẽ không bao giờ vượt quá 4000 ký tự vì có vấn đề về lập chỉ mục.
HLGEM

Tôi tin rằng điều này đã lỗi thời. Xem câu trả lời từ @marc_s.
Fabio Milheiro

9

Từ tài liệu MSDN

nvarchar [(n | max )]

Dữ liệu chuỗi Unicode có độ dài thay đổi. n xác định độ dài chuỗi và có thể là giá trị từ 1 đến 4.000. max chỉ ra rằng kích thước lưu trữ tối đa là 2 ^ 31-1 byte (2 GB). Kích thước lưu trữ, tính bằng byte, gấp hai lần chiều dài thực của dữ liệu được nhập + 2 byte


6

Tôi nghĩ rằng thực sự nvarchar(MAX)có thể lưu trữ khoảng 1070000000 chars.


Bạn có thể giải thích nơi bạn nhận được số đó và ý của bạn là "chính xác" không? (ví dụ đang nói đó không phải là một giới hạn cứng, nhưng với các nhân vật hơn có thể có vấn đề gì loại vấn đề Tại sao??)
Adi Inbar

3
Tôi không chắc chắn, nhưng tôi nghĩ, nếu nvarchar sử dụng không gian gấp đôi so với varchar để lưu trữ char và số lượng bộ nhớ maximun có thể được sử dụng bởi nvarchar (MAX) để lưu trữ ký tự là 2 ^ 31-1 => 2147483647, thì 2147483647/2 là 1073741824. chính xác, ý tôi là đó không phải là một con số chính xác.
Francisco Javier Lario Soto
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.