Выбор столбцов из строки - PullRequest
2 голосов
/ 15 мая 2019

У меня есть строка с нужными мне столбцами, которые я хочу выбрать.Например:

@sqlstring = 'col1,col2,col3'

Я хочу выбрать столбцы из таблицы, используя эту строку.Как

SELECT @sqlstring FROM MyTable 

Но выбирайте только эту строку, столько же, сколько столбцов в таблице

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

Ответы [ 3 ]

2 голосов
/ 15 мая 2019

Можно попробовать использовать динамический sql

DECLARE @SQL VARCHAR(MAX)=  'SELECT '+  @sqlstring + ' FROM MyTable '
EXEC (@SQL)  

SQLFIDDLE

0 голосов
/ 15 мая 2019

В 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)
0 голосов
/ 15 мая 2019

Вам необходимо использовать динамический 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...