2011-04-12 207 views
3

請告訴我如何獲取特定行的列值= 123的列名稱。提前感謝。要從表中獲取具有特定值的列名稱

+1

這是一個不尋常的事情要去做,不是特別容易在純SQL做..也許,如果你給你的問題的詳細信息,有人能提出一個更好的辦法。 – Blorgbeard 2011-04-12 07:35:10

+0

如果您使用其他編程語言連接到SQL,則只需從SQL加載整行,然後檢查應用程序中的每個列可能會更容易。 – Blorgbeard 2011-04-12 07:36:02

+0

對於特定的行,我將requestID作爲唯一標識,而列名稱是聯繫人的角色。我是否可以獲得特定助理的所有角色,比如說ID = 1916,其中1916將是列值,角色將是列名。 – jACOB 2011-04-12 07:40:56

回答

9
-- Test table 
declare @T table(ID int, Col1 varchar(10), Col2 int, Col3 bit, Col4 varchar(max)) 
insert into @T values (1, '123', 123, 1, 'Some text long text') 

-- ID to get one row 
declare @ID int 
set @ID = 1 

-- Value to search for 
declare @Val varchar(10) 
set @Val = '123' 

select 
    Col.value('local-name(.)', 'varchar(max)') as ColName 
from (select * 
     from @T 
     where ID = @ID 
     for xml path(''), type) as T(XMLCol) 
    cross apply 
    T.XMLCol.nodes('*') as n(Col) 
where Col.value('.', 'varchar(10)') = @Val 

結果

ColName 
-------- 
Col1 
Col2 
+0

非常感謝。 – jACOB 2011-04-12 10:39:15

+0

這裏[小提琴](http://sqlfiddle.com/#!3/05ae7/2) – WiiMaxx 2015-02-11 10:43:07

相關問題