SQL Server 2012

Returns the defined length, in bytes, of a column.

Topic link icon Transact-SQL Syntax Conventions

COL_LENGTH ( 'table' , 'column' )

' table '

Is the name of the table for which to determine column length information. table is an expression of type nvarchar.

' column '

Is the name of the column for which to determine length. column is an expression of type nvarchar.

Returns NULL on error or if a caller does not have permission to view the object.

In SQL Server, a user can only view the metadata of securables that the user owns or on which the user has been granted permission. This means that metadata-emitting, built-in functions such as COL_LENGTH may return NULL if the user does not have any permission on the object. For more information, see Metadata Visibility Configuration.

For columns of type varchar declared with the max specifier (varchar(max)), COL_LENGTH returns the value –1.

The following example shows the return values for a column of type varchar(40) and a column of type nvarchar(40).

USE AdventureWorks2012;
CREATE TABLE t1(c1 varchar(40), c2 nvarchar(40) );
SELECT COL_LENGTH('t1','c1')AS 'VarChar',
      COL_LENGTH('t1','c2')AS 'NVarChar';

Here is the result set.

VarChar     NVarChar
40          80