用于动态传递列名的SQL查询

时间:2015-11-12 08:50:50

标签: sql sql-server sql-server-2008 sql-server-2008-r2 sql-server-2012

我在存储过程中有一个select查询,它将列列表作为参数。将列列表作为参数传递使用引号''。我想在将其传递给查询时删除引号。

如何使用SQL查询删除动态列列表的单引号?

例如表格是:

id  string  value
1    ttt    111
2    ggg    222

存储过程:

--Exec sp_dc 'id,String'
alter proc sp_dc
(
    @Col_list nvarchar(255)
)
as
begin
    select Replace(@Col_list, '''', '') from table
end

当我执行以下查询时:

Exec sp_dc 'id,String'

我应该得到结果:

id  string
1    ttt
2    ggg

1 个答案:

答案 0 :(得分:1)

使用replace功能:

DECLARE @s VARCHAR(100) = '''col1'', ''col2'''
SELECT @s
SELECT REPLACE(@s, '''', '')

这应该在您的存储过程中:

DECLARE @sql NVARCHAR(MAX) = 'SELECT ' + Replace(@Col_list, '''', '')  + ' FROM table'
EXEC(@sql)