sql >> Base de Datos >  >> RDS >> Sqlserver

¿Nombre de columnas variables de SQL Server?

No puede hacerlo porque SQL se compila antes de saber cuál es el valor de @a (supongo que, en realidad, desea que @a sea un parámetro y no esté codificado como en su ejemplo).

En su lugar, puedes hacer esto:

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

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

exec sp_executesql @sql

Pero tenga cuidado, esta es una vulnerabilidad de seguridad (ataques de inyección de sql), por lo que no debe hacerlo si no puede confiar o limpiar bien @a.