Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Nom des colonnes de variables SQL Server ?

Vous ne pouvez pas le faire car SQL est compilé avant de savoir quelle est la valeur de @a (je suppose qu'en réalité, vous voudriez que @a soit un paramètre et non codé en dur comme dans votre exemple).

À la place, vous pouvez faire ceci :

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

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

exec sp_executesql @sql

Mais attention, il s'agit d'une faille de sécurité (attaques par injection SQL) donc ne devrait pas être fait si vous ne pouvez pas faire confiance ou bien nettoyer @a.