从字符串中选择列

时间:2019-05-15 10:33:38

标签: sql sql-server

我有一个包含我想要选择的列的字符串。例如:

@sqlstring = 'col1,col2,col3'

我想使用此字符串从表中选择列。喜欢

SELECT @sqlstring FROM MyTable 

但是只能选择此字符串,与表中的列数一样多

col1,col2,col3 
col1,col2,col3 
col1,col2,col3

3 个答案:

答案 0 :(得分:2)

您可以尝试使用动态sql

location_z

SQLFIDDLE

答案 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)