SQL Server variable columns name?
sql-server, t-sql
Solution
You can't do it because SQL is compiled before it knows what the value of @a is (I'm assuming in reality you would want @a to be some parameter and not hard coded like in your example).
Instead you can do this:
declare @a as varchar;
set @a='TEST'
declare @sql nvarchar(max)
set @sql = 'select [' + replace(@a, '''', '''''') + '] from x'
exec sp_executesql @sql
But be careful, this is a security vulnerability (sql-injection attacks) so shouldn't be done if you can't trust or well clean @a.
Problem
I am wondering why I cannot use variable column name like that: ``` declare @a as varchar; set @a='TEST' select @a from x; ``` Thank you