¿Cuál es el número máximo de caracteres que contendrá nvarchar (MAX)?


102

Soy nuevo en el concepto nvarchar(MAX). ¿Cuántos personajes contendrá?

Respuestas:


155

Max. la capacidad es de 2 gigabytes de espacio, por lo que está viendo poco más de mil millones de caracteres de 2 bytes que caben en un NVARCHAR(MAX)campo.

Usando los números más detallados de la otra respuesta, debería poder almacenar

(2 ^ 31 - 1 - 2) / 2 = 1'073'741'822 double-byte characters

1 billion, 73 million, 741 thousand and 822 characters to be precise

en su NVARCHAR(MAX)columna (desafortunadamente, ese último medio carácter se desperdicia ...)

Actualización: como señaló @MartinMulder: cualquier columna de caracteres de longitud variable también tiene una sobrecarga de 2 bytes para almacenar la longitud real, por lo que necesitaba restar dos bytes más de la 2 ^ 31 - 1longitud que había estipulado anteriormente, por lo que puede almacenar 1 carácter Unicode menos de Lo había reclamado antes.


1
Wow ... así que supongo que realmente no necesito preocuparme por establecer una regla de validación de tamaño máximo. Sin embargo, será mejor que tenga cuidado cuando uso el nvarchar (MAX).
quakkels

20
@quakkels: a menos que planee superar la Guerra y la paz de Tolstoi (aproximadamente 3,1 millones de caracteres) casi 350 veces, no, no tendrá que preocuparse por la capacidad :-) Y dado que es del tipo VARCHAR / NVARCHAR, lo hará siempre utilice únicamente el espacio que necesita - no se preocupa por el espacio perdido o innecesariamente reservará bien ...
marc_s

2
¿De Verdad? Eso es genial. Solo por curiosidad, ¿en qué caso no querría usar nvarchar (MAX)?
quakkels

5
@quakkels: use VARCHAR(MAX), si no necesita el soporte de 2 bytes para idiomas asiáticos, árabes o cirílicos. Uso (N)VARCHAR(x)si sabes una cadena nunca será más largo que caracteres x (no utilizar NVARCHAR(MAX)un nombre - el uso NVARCHAR(50)o lo que tenga sentido para usted)
marc_s

1
Acabo de comenzar mi mañana haciéndome la misma pregunta y ambas respuestas evocaron una gran sonrisa en mi rostro. +1.
Matthis Kohli

11

De char y varchar (Transact-SQL)

varchar [(n | max)]

Datos de caracteres no Unicode de longitud variable. n puede ser un valor de 1 a 8.000. max indica que el tamaño máximo de almacenamiento es 2 ^ 31-1 bytes. El tamaño de almacenamiento es la longitud real de los datos ingresados ​​+ 2 bytes. Los datos ingresados ​​pueden tener 0 caracteres de longitud. Los sinónimos ISO para varchar varían según el carácter o el carácter.


4

2 ^ 31-1 bytes. Entonces, un poco menos de 2 ^ 31-1 caracteres para varchar (max) y la mitad para nvarchar (max).

nchar y nvarchar

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.