Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Nome das colunas variáveis ​​do SQL Server?


Você não pode fazer isso porque o SQL é compilado antes de saber qual é o valor de @a (suponho que, na realidade, você gostaria que @a fosse algum parâmetro e não codificado como no seu exemplo).

Em vez disso, você pode fazer isso:
declare @a as varchar; 
set @a='TEST' 

declare @sql nvarchar(max)
set @sql = 'select [' + replace(@a, '''', '''''') + '] from x'

exec sp_executesql @sql

Mas tenha cuidado, esta é uma vulnerabilidade de segurança (ataques de injeção de sql), portanto, não deve ser feito se você não puder confiar ou limpar bem @a.