2013-06-20 3 views
0

У меня есть счет, который идет от 4 до 31. Этот счетчик столбцов в таблице. Я хочу знать имя столбца относительно счета. Мой счетчик столбцов будет меняться, поскольку я применил цикл. Например: Мой столбец F3, F4, ..... F31. Мой счет начинается с 4, в это время моя колонка F3. Как я могу получить имя имени столбца. В следующий раз, когда счетчик станет 4, указатель переместится вперед в столбец F4. В этот момент я хочу, чтобы имя столбца было F4. Как я могу это достичь? Ниже приведен код, который не учитывает столбцов для меня.Получение имени столбца из числа столбцов

declare @col_Count int 
set @col_Count = (select count(*) NoOfColumns from SYSCOLUMNS 
WHERE id= (Select id from SYSOBJECTS where name = 'TEMP_STOCK_uPDATE')) 
select syscolumns from dbo.TEMP_STOCK_uPDATE 
+1

Попытка работать с колоннами по их порядковым «позициям» обычно чревата опасностью. Столбцы должны только (в идеале) ссылаться по имени. Возможно, если бы вы сказали нам, какую проблему вы пытаетесь решить (а не это очевидное решение), мы могли бы предложить несколько лучших предложений. –

ответ

0

Вы можете использовать поле colorder of syscolumns. См. Пример ниже:

declare @colindex int 
declare @colcount int 
declare @tableid int 
declare @colname varchar(100) 

set @tableid = (select id from sysobjects where name='name-of-table') 
set @colcount = (select COUNT(*) from syscolumns where id = @tableid) 

set @colindex = 1 
while @colindex <= @colcount 
begin 
    set @colname = (select name from syscolumns where id = @tableid and colorder = @colindex) 
    print @colname 
    set @colindex = @colindex + 1 
end 
+0

В SQL Server часто проще работать с функциями метаданных, чем с системными представлениями. Таким образом, вместо первого запроса вы можете использовать OBJECT_ID («имя-таблицы») и COL_NAME (@tableid, @colindex) вместо запроса внутри цикла. –

Смежные вопросы