微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql-server – SQL Server变量列名?

我想知道为什么我不能使用像这样的变量列名:
declare @a as varchar;
set @a='TEST'

select @a from x;

谢谢

解决方法

你不能这样做,因为sql在它知道@a的值之前是编译的(我假设在现实中你会想要@a是一些参数,而不是像你的例子那样硬编码).

相反,您可以这样做:

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

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

exec sp_executesql @sql

但要小心,这是一个安全漏洞(sql-injection攻击),所以如果不能信任或很好地清理@a,则不应该这样做.

原文地址:https://www.jb51.cc/mssql/82353.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐