Your results show the length in bytes of the column, not how many characters it can store. The column you are using is an nvarchar column, and so a character will take up 2 bytes instead of 1, so in your case (500 / 2) = 250 characters max.
This will show you the difference, we have two columns, each which can hold 50 characters, but the length of the nvarchar column is 100
CREATE TABLE [#text]
(
[Text] VARCHAR(50),
[NText] NVARCHAR(50)
)
SELECT COL_LENGTH( 'tempdb..#Text' , 'Text' ) [Varchar_Length],
COL_LENGTH( 'tempdb..#Text' , 'NText' ) [NVarchar_Length]
DROP TABLE [#text]
The results are:
Varchar_Length | NVarchar_Length
50 | 100
length? Is it the number from when you declared the table, or is it the length in bytes?