我有一个包含我想要选择的列的字符串。例如:
@sqlstring = 'col1,col2,col3'
我想使用此字符串从表中选择列。喜欢
SELECT @sqlstring FROM MyTable
但是只能选择此字符串,与表中的列数一样多
col1,col2,col3
col1,col2,col3
col1,col2,col3
答案 0 :(得分:2)
答案 1 :(得分:0)
您需要使用动态SQL。在SQL Server中这样做时,建议使用sp_executesql
:
declare @sql varchar(max);
set @sql = '
select @sqlstring
from my_table
';
set @sql = replace(@sql, '@sqlstring', @sqlstring);
exec sp_executesql @sql;
答案 2 :(得分:0)
在SQL Server 2016中,他们引入了拆分字符串功能:STRING_SPLIT
DECLARE @sqlstring varchar(100) = 'col1,col2,col3'
DECLARE @Delimiter CHAR = ','
SELECT LTRIM(RTRIM(Split.a.value('.', 'VARCHAR(100)'))) 'Value'
FROM
(
SELECT CAST ('<M>' + REPLACE(@sqlstring, @Delimiter, '</M><M>') + '</M>' AS XML) AS Data
) AS A
CROSS APPLY Data.nodes ('/M') AS Split(a)