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. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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  ColName,
    t.Name 'Data type',
    c.max_length 'Max Length',
    c.precision ,
     c.scale ,
    ISNULL(i.is_primary_key, 0) 'Primary Key'

    sys.columns c
    sys.types t ON c.user_type_id = t.user_type_id
    sys.index_columns ic ON ic.object_id = c.object_id AND ic.column_id = c.column_id
    sys.indexes i ON ic.object_id = i.object_id AND ic.index_id = i.index_id
    c.object_id = OBJECT_ID('Table Name')
share|improve this question
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 '14 at 20:57

Your Answer


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.