drop table if exists dat;
create table dat(A int,B int,C INT,D INT,E INT,F INT);
insert into dat(A,B,C,D,E,F)values(1,2,3,4,5,6),(7,8,9,10,11,12),(13,14,15,16,1,18);
drop table if exists def;
create table def(colName varchar(10),ColID int);
insert into def(ColName,ColID)values
('A',1),('B',2),('C',3),('D',4),('E',5),('F',6);
set @colID:=3, @colValue:='9';
select @sql:=colName from def where colID=@colID; ##根据序列返回列名
select @sql:='SELECT * FROM dat WHERE '+@sql+'='+@colvalue; ##加入到Where中
select @sql
EXEC(@sql);
drop table if exists dat;
create table dat(A int,B int,C INT,D INT,E INT,F INT);
insert into dat(A,B,C,D,E,F)values(1,2,3,4,5,6),(7,8,9,10,11,12),(13,14,15,16,1,18);
drop table if exists def;
create table def(colName varchar(10),ColID int);
insert into def(ColName,ColID)values
('A',1),('B',2),('C',3),('D',4),('E',5),('F',6);
set @colID:=3, @colValue:='9';
select @sql:=colName from def where colID=@colID; ##根据序列返回列名
select @sql:='SELECT * FROM dat WHERE '+@sql+'='+@colvalue; ##加入到Where中
select @sql
EXEC(@sql);
DECLARE @col NVARCHAR(MAX)
DECLARE @str NVARCHAR(MAX)
SELECT @col = name
FROM syscolumns
WHERE id = OBJECT_ID('表名')
AND colid = N
SET @str = 'select ' + @col + ' from 表名'
EXEC(@str)
DECLARE @col NVARCHAR(MAX)
DECLARE @str NVARCHAR(MAX)
SELECT @col = name
FROM syscolumns
WHERE id = OBJECT_ID('表名')
AND colid = N
SET @str = 'select ' + @col + ' from 表名'
EXEC(@str)