Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server-Variablenspaltenname?

Sie können es nicht tun, weil SQL kompiliert wird, bevor es weiß, was der Wert von @a ist (ich gehe davon aus, dass Sie in Wirklichkeit wollen, dass @a ein Parameter ist und nicht wie in Ihrem Beispiel fest codiert).

Stattdessen können Sie Folgendes tun:

declare @a as varchar; 
set @a='TEST' 

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

exec sp_executesql @sql

Aber seien Sie vorsichtig, dies ist eine Sicherheitslücke (SQL-Injection-Angriffe), also sollten Sie es nicht tun, wenn Sie @a nicht vertrauen oder es nicht gut reinigen können.