SQL Server variable columns name?

前端 未结 4 1956
刺人心
刺人心 2020-11-29 10:59

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

4条回答
  •  借酒劲吻你
    2020-11-29 11:39

    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.

提交回复
热议问题