如何在 SQL 的 WHERE 子句中动态调用列

Posted

技术标签:

【中文标题】如何在 SQL 的 WHERE 子句中动态调用列【英文标题】:How to call a column dynamically in the WHERE clause in SQL 【发布时间】:2021-09-11 05:49:39 【问题描述】:

我试图弄清楚如何调用表中列名与声明变量的值匹配的列。在此示例中,Tbl_B 具有标记为 DPS_YYYYMM 的列,例如“DPS_201911”、“DPS_201910”、“DPS_201909”......我需要找到一种方法从 Tbl_B 调用与@Var 匹配的给定 YYYYMM 的正确列。你能帮忙吗?

Campaign_ID DPS_201911 DPS_201910
1 345 123
DECLARE @Var varchar(50)
SET @Var = '201911'

 SELECT ?????
 From Tbl_B
 WHERE campaign_Id = 1 
 

【问题讨论】:

【参考方案1】:

使用Dynamic sql,如下所示

DECLARE @Var varchar(50), @sql varchar(max)
SET @Var = '201911'
set @Var='DPS_'+ @Var;
set @sql='SELECT '+@Var+'
From Tbl_B
WHERE campaign_Id = 1'
EXEC (@sql)

【讨论】:

以上是关于如何在 SQL 的 WHERE 子句中动态调用列的主要内容,如果未能解决你的问题,请参考以下文章

从搜索表单动态构建 WHERE 子句时如何防止 SQL 注入?

如何在sql中创建动态where子句?

如何使用 SQL 格式的动态 where 子句制作谓词

如何将字符串变量传递给动态sql中的where子句

如何在 SQL where 子句中调用函数/过程?

LINQ to SQL查询中的C#Dynamic WHERE子句