INDEX_COL (Transact-SQL)

Returns the indexed column name. Returns NULL for XML indexes.

Topic link icon Transact-SQL Syntax Conventions


INDEX_COL ( '[ database_name . [ schema_name ] .| schema_name ]
    table_or_view_name', index_id , key_id )


  • database_name
    Is the name of the database.

  • schema_name
    Is the name of the schema to which the index belongs.

  • table_or_view_name
    Is the name of the table or indexed view. table_or_view_name must be delimited by single quotation marks and can be fully qualified by database name and schema name.

  • index_id
    Is the ID of the index. index_ID is int.

  • key_id
    Is the index key column position. key_ID is int.

Return Types

nvarchar (128)


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

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 INDEX_COL may return NULL if the user does not have any permission on the object. For more information, see Metadata Visibility Configuration.


A. Using INDEX_COL to return an index column name

The following example returns the column names of the two key columns in the index PK_SalesOrderDetail_SalesOrderID_LineNumber.

USE AdventureWorks2012;
    INDEX_COL (N'AdventureWorks2012.Sales.SalesOrderDetail', 1,1) AS
        [Index Column 1], 
    INDEX_COL (N'AdventureWorks2012.Sales.SalesOrderDetail', 1,2) AS
        [Index Column 2]

Here is the result set:

Index Column 1      Index Column 2
SalesOrderID        SalesOrderDetailID

See Also


Expressions (Transact-SQL)

Metadata Functions (Transact-SQL)

sys.indexes (Transact-SQL)

sys.index_columns (Transact-SQL)