sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cómo almacenar una cadena var mayor que varchar (max)?

En serio - VARCHAR(MAX) puede almacenar hasta 2 GB de datos, no solo 8000 caracteres...

Prueba esto:

DECLARE @myVar VARCHAR(MAX) = ''

DECLARE @ix INT = 1

WHILE @ix < 1000
BEGIN
    set @myVar = @myVar + CAST('bla bla bla' AS VARCHAR(MAX))
    SET @ix = @ix + 1
END

SELECT DATALENGTH(@myvar)

Esto devolverá un valor más alto de 8000 caracteres después de 1000 iteraciones.

El punto es:si está usando varchar(max) , debes asegurarte de transmitir siempre todas sus cadenas a varchar(max) explícitamente, como hice en este ejemplo. De lo contrario, SQL Server recurrirá a varchar "regular" procesamiento, y de hecho está limitado a 8000 caracteres....