2013-06-20 167 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

您可以使用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)代替循環內部的查詢。 –