从具有特定值的表中获取列名
Posted
技术标签:
【中文标题】从具有特定值的表中获取列名【英文标题】:To get column names from table having a particular value 【发布时间】:2011-04-12 07:29:38 【问题描述】:请告诉我如何获取特定行的列值 =123 的列名。提前致谢。
【问题讨论】:
这是一件不寻常的事情,而且在纯 SQL 中也不是特别容易做到。也许如果你提供更多关于你的问题的细节,有人可以提出更好的方法。 如果您使用其他编程语言连接到 SQL,从 SQL 加载整行然后检查应用程序中的每一列可能更容易。 对于特定行,我将 requestID 作为唯一 ID,列名是关联的角色。我可以获取特定员工的所有角色,比如 id=1916,其中 1916 将是列值,角色将是列名。 你能改变数据库设计吗?听起来角色应该是数据而不是列名。如果没有,您使用的是哪种编程语言?还是在纯 SQL 中? 【参考方案1】:-- 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
【讨论】:
以上是关于从具有特定值的表中获取列名的主要内容,如果未能解决你的问题,请参考以下文章