Get a List of Table Indexes in SQL Server

Following SQL Server statement will return a list of all index names for a table dbo.sales.

SELECT idx.name
FROM
    sys.indexes idx
JOIN
    sys.objects obj
    ON idx.object_id = obj.object_id
WHERE
    obj.type_desc = 'USER_TABLE'
    AND schema_name(obj.schema_id) = 'dbo'
    AND obj.name = 'sales'
;

List only non-clustered indexes

In case you need only non-clustered index:

SELECT idx.name
FROM
    sys.indexes idx
JOIN
    sys.objects obj
    ON idx.object_id = obj.object_id
WHERE
    idx.type_desc = 'NONCLUSTERED'
    AND obj.type_desc = 'USER_TABLE'
    AND schema_name(obj.schema_id) = 'dbo'
    AND obj.name = 'sales'
;

List indexes in CSV

To make a CSV list of indexes:

DECLARE @sql AS VARCHAR(MAX)='';

SELECT @sql = @sql + idx.name + ','
FROM
    sys.indexes idx
JOIN
    sys.objects obj
    ON idx.object_id = obj.object_id
WHERE
    idx.type_desc = 'NONCLUSTERED'
    AND obj.type_desc = 'USER_TABLE'
    AND schema_name(obj.schema_id) = 'dbo'
    AND obj.name = 'sales'
;

SELECT @sql;