如何仅动态显示表中的特定Cloumn数据

时间:2019-05-15 05:23:36

标签: sql

我必须通过传递列名作为输入来仅显示特定的列数据。

1 个答案:

答案 0 :(得分:0)

使用动态SQL。但是请加入sys.columns以避免SQL注入攻击。 示例查询如下所示

DECLARE @qry NVARCHAR(MAX) =
'SELECT ' + STUFF((
    SELECT ', ' + QUOTENAME(c.name) 
    FROM Report.InfoColumnOrder r
    JOIN sys.columns c ON c.name = r.ColumnName AND c.object_id = object_id('dbo.Info')
    WHERE u.UserId = @user
    ORDER BY r.SN
    FOR XML PATH(''), TYPE).value('.','nvarchar(max)'),1,2,'') +
 ' FROM dbo.Info'
;
EXEC sp_executesql @qry, N'@user int', @user = @userid;