Forum Discussion
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
- ViorelCopper 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