SQL 服务器有没有办法从给定列表中获取 select 列
SQL Server Is there a way to select columns from a given list
我有一个动态列列表,然后 select 列表中 table 中的列。
例如
Select (List of columns)
from tablename
这是我的代码
SET NOCOUNT ON;
DECLARE @table TABLE(cols varchar(50));
DECLARE @tablename NVARCHAR(255);
DECLARE @tableid INT;
DECLARE @sSQL NVARCHAR(500);
SET @tableid = (SELECT DISTINCT TABLEID FROM faciltyShowedDetails WHERE layerid = @layerid);
SET @tablename = (SELECT dbo.FNC_Search_GetSearchTable(@tableid))
INSERT INTO @table(cols)
SELECT COLUMN_NAME
FROM faciltyShowedDetails
WHERE layerid = @layerid;
我想从 @table
中的列列表中 select。
您将构建查询并使用动态 SQL。假设 "list" 确实是一个以逗号分隔的列表:
declare @sql nvarchar(max);
set @sql = 'select [cols] from tablename';
set @sql = replace(@sql, '[cols]', @cols);
exec sp_executesql @sql;
编辑:
要从 table 中获取列,您可以使用技巧:
declare @cols varchar(max);
select @cols = ', ' + columnname
from @table t;
然后您必须删除前面代码中的第一个逗号(使用 stuff()
)。
我有一个动态列列表,然后 select 列表中 table 中的列。
例如
Select (List of columns)
from tablename
这是我的代码
SET NOCOUNT ON;
DECLARE @table TABLE(cols varchar(50));
DECLARE @tablename NVARCHAR(255);
DECLARE @tableid INT;
DECLARE @sSQL NVARCHAR(500);
SET @tableid = (SELECT DISTINCT TABLEID FROM faciltyShowedDetails WHERE layerid = @layerid);
SET @tablename = (SELECT dbo.FNC_Search_GetSearchTable(@tableid))
INSERT INTO @table(cols)
SELECT COLUMN_NAME
FROM faciltyShowedDetails
WHERE layerid = @layerid;
我想从 @table
中的列列表中 select。
您将构建查询并使用动态 SQL。假设 "list" 确实是一个以逗号分隔的列表:
declare @sql nvarchar(max);
set @sql = 'select [cols] from tablename';
set @sql = replace(@sql, '[cols]', @cols);
exec sp_executesql @sql;
编辑:
要从 table 中获取列,您可以使用技巧:
declare @cols varchar(max);
select @cols = ', ' + columnname
from @table t;
然后您必须删除前面代码中的第一个逗号(使用 stuff()
)。