You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将表列名存入局部变量并在SELECT语句中使用?

解决SQL中用局部变量指定列名查询的问题

你当前的代码之所以只返回变量名称,是因为SQL在执行静态查询时,会把@vprice直接当成字符串常量处理,不会将它的值解析为数据表的列名。要实现用变量指定列名查询,得用动态SQL来拼接执行语句,具体写法如下:

DECLARE @vprice VARCHAR(10)
SET @vprice = 'salesprice'
-- 定义动态SQL语句变量
DECLARE @sql NVARCHAR(MAX)
-- 拼接查询语句,用QUOTENAME包裹列名防止SQL注入和语法错误
SET @sql = N'SELECT ' + QUOTENAME(@vprice) + N' FROM dbo.mydata'
-- 执行动态SQL
EXEC sp_executesql @sql

关键说明

  • QUOTENAME函数的作用是给列名加上方括号(比如把salesprice变成[salesprice]),避免当列名是SQL关键字或者包含特殊字符时出现语法错误,同时能有效防范SQL注入风险。
  • 动态SQL是在运行时才生成并执行查询语句,所以能识别变量中的列名。

内容的提问来源于stack exchange,提问作者Georg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 09:23:10