Forum Discussion

tuspatil's avatar
tuspatil
Copper Contributor
Oct 08, 2025
Solved

Why is SQL Server only storing 4000 characters in an NVARCHAR(MAX) column?

Hi Guys,

 

I'm trying to insert a string with 10,000 plain characters (just repeated 'A's) into a column defined as NVARCHAR(MAX) in SQL Server.

But LEN(Content) always returns 4000, not 10,000. I’ve verified that the column is NVARCHAR(MAX) and used the N prefix for Unicode. Still, the data seems to be truncated.

What could be causing this? Is there something I'm missing in how SQL Server handles large strings?

 

Tried this:

CREATE TABLE LargeTextExample ( Id INT PRIMARY KEY IDENTITY(1,1), Content NVARCHAR(MAX) );

DECLARE @LongText NVARCHAR(MAX);

SET @LongText = REPLICATE(N'A', 10000); 

INSERT INTO LargeTextExample (Content) VALUES (@LongText);

SELECT LEN(Content) AS CharacterCount FROM LargeTextExample;

 

 

Thanks,

Tushar

  • Try to cast the N'A'. The next example shows the differences:

    declare @LongText1 nvarchar(max)
    declare @LongText2 nvarchar(max)
    
    set @LongText1 = replicate(N'A', 10000)
    set @LongText2 = replicate(cast(N'A' as nvarchar(max)), 10000)
    
    select len(@LongText1), len(@LongText2) -- returns 4000 and 10000

     

1 Reply

  • Viorel's avatar
    Viorel
    Copper Contributor

    Try to cast the N'A'. The next example shows the differences:

    declare @LongText1 nvarchar(max)
    declare @LongText2 nvarchar(max)
    
    set @LongText1 = replicate(N'A', 10000)
    set @LongText2 = replicate(cast(N'A' as nvarchar(max)), 10000)
    
    select len(@LongText1), len(@LongText2) -- returns 4000 and 10000

     

Resources