Take the 2-minute tour ×
Database Administrators Stack Exchange is a question and answer site for database professionals who wish to improve their database skills and learn from others in the community. It's 100% free, no registration required.

Can anyone please explain me the below one. I used the below query in getting the table columns info, but the max length seems to be x*2 of the actual col length. I mean if I have a col with datatype nvarchar(10) the output of my query has max_length value as '20'. I'm little confused here.. A'm I looking at the right one?

SELECT 
    c.name  ColName,
    t.Name 'Data type',
    c.max_length 'Max Length',
    c.precision ,
     c.scale ,
    c.is_nullable,
    ISNULL(i.is_primary_key, 0) 'Primary Key'



FROM    
    sys.columns c
INNER JOIN 
    sys.types t ON c.user_type_id = t.user_type_id
LEFT OUTER JOIN 
    sys.index_columns ic ON ic.object_id = c.object_id AND ic.column_id = c.column_id
LEFT OUTER JOIN 
    sys.indexes i ON ic.object_id = i.object_id AND ic.index_id = i.index_id
WHERE
    c.object_id = OBJECT_ID('Table Name')
share|improve this question

1 Answer 1

up vote 2 down vote accepted

The column max_length is the maximum column length in bytes. For the National-Character set string types (NCHAR and NVARCHAR), each character requires two-bytes, so NCHAR(10) would have a max_length value of 20.

share|improve this answer
    
Ok, thank you for the clarification.. –  Sai Jul 3 at 20:57

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.