Qual é o número máximo de caracteres para o NVARCHAR (MAX)?

Respostas:

413

O tamanho máximo para uma coluna do tipo NVARCHAR(MAX) é 2 GByte de armazenamento.

Como NVARCHARusa 2 bytes por caractere, isso é aprox. 1 bilhão de caracteres.

A Guerra e a Paz de Leo Tolstoj é um livro de 1.440 páginas, contendo cerca de 600.000 palavras - de modo que podem ter 6 milhões de caracteres - bem arredondadas. Assim, você pode colar cerca de 166 cópias de todo o livro Guerra e Paz em cada NVARCHAR(MAX)coluna.

Existe espaço suficiente para as suas necessidades? :-)

marc_s
fonte
17
Apenas uma escolha nit. O NVARCHAR usa 2 bytes para a maioria dos caracteres. Para caracteres unicode acima de U + 00FFFF. Usará quatro bytes.
Eli Algranti
7
Isso é loucura além de sparta.
precisa saber é o seguinte
1
O que o PostgreSQL é equivalente ao NVCHAR (MAX)?
Pratik
63

Por padrão, os valores nvarchar (MAX) são armazenados exatamente da mesma forma que os valores nvarchar (4000), a menos que o comprimento real exceda 4000 caracteres; nesse caso, os dados em linha são substituídos por um ponteiro para uma ou mais páginas separadas em que os dados são armazenados.

Se você antecipar dados com mais de 4000 caracteres, nvarchar (MAX) é definitivamente a escolha recomendada.

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

Madushan
fonte
12
Também NÃO é recomendado se seus dados nunca excederem 4000 caracteres, pois há problemas de indexação.
HLGEM
Eu acredito que isso está desatualizado. Veja a resposta de @marc_s.
Fabio Milheiro
9

Da documentação do MSDN

nvarchar [(n | max )]

Dados de seqüência de caracteres Unicode de comprimento variável. n define o comprimento da string e pode ser um valor de 1 a 4.000. max indica que o tamanho máximo de armazenamento é 2 ^ 31-1 bytes (2 GB). O tamanho do armazenamento, em bytes, é duas vezes o comprimento real dos dados inseridos + 2 bytes

JiNish
fonte
6

Eu acho que realmente nvarchar(MAX)pode armazenar aproximadamente 1070000000 caracteres.

Francisco Javier Larios Soto
fonte
Você pode explicar onde está obtendo esse número e o que quer dizer com "precisão"? (ou seja, você está dizendo que não é um limite rígido, mas com mais personagens pode haver problemas Que tipos de problemas Por que???)
Adi Inbar
3
Não tenho certeza, mas acho que, se nvarchar usar espaço duplo que varchar para armazenar um caractere, e o número máximo de memória que pode ser usado pelo nvarchar (MAX) para armazenar caracteres é 2 ^ 31-1 => 2147483647, 2147483647/2 é 1073741824. com precisão, quero dizer que não é um número exato.
Francisco Javier Larios Soto