数据库里一记录有100个字段. 数据是只有一个字段是1,其他都是-1, 如何用SQL语句得到值是1的字段名?

2024-11-23 05:34:56
推荐回答(3个)
回答(1):

给你提供个思路吧:
用select name from syscolumns where id=object_id('表名')可以查出表的所有字段名。
然后用游标循环加sql拼接的方式,去挨个判断每一个字段的值。

回答(2):

declare @tabname varchar(30),@tabid int,@cid int
declare @colname varchar(30),@sql nvarchar(200),@col int

set @tabname = 'bd_cs'--声名变量表名,此处可换成真实表名。
set @tabid = (select id from sysobjects where name = @tabname)--在系统表中查出表ID
--通过表ID取得列ID进入循环
set @cid = (select min(colid) from syscolumns where id = @tabid)
while (@cid <= (select max(colid) from syscolumns where id = @tabid))
begin
set @colname = (select name from syscolumns where id = @tabid and colid = @cid)
set @sql = 'select @col = '+@colname+' from '+@tabname
exec sp_executesql @sql , N'@col int output' , @col output
--找到相对应的列后退出
if @col = -1
begin
print @colname
break
end
set @cid = @cid + 1
end

--需注意,1.表中只有一行数据,否则还要再加一次循环
--2.列字段类型为数值型。

回答(3):

有意思,学习了。