在sql中将变量用作列名

在sql中将变量用作列名,sql,sql-server-2008,Sql,Sql Server 2008,在sql联接中是否有任何方法可以使用变量名作为列名,而不使用动态查询 我想像下面那样使用它 DECLARE@PT\u CONST VARCHAR(MAX) 从TBL T中选择*,其中T.@PT_CONST='VAL'不直接选择。如果您知道列名可以是预定义的集合之一,那么您可以使用 ... WHERE CASE @PT_CONST WHEN 'Col1' THEN Col1 WHEN 'Col2' THEN Col2 ... END = 'VAL' 如果您可以从TBL T中选择*,其中coulm

在sql联接中是否有任何方法可以使用变量名作为列名,而不使用动态查询

我想像下面那样使用它

DECLARE@PT\u CONST VARCHAR(MAX)


从TBL T中选择*,其中T.@PT_CONST='VAL'

不直接选择。如果您知道列名可以是预定义的集合之一,那么您可以使用

... WHERE CASE @PT_CONST WHEN 'Col1' THEN Col1 WHEN 'Col2' THEN Col2 ... END = 'VAL'

如果您可以从TBL T中选择*,其中coulmn\u nmae=@PT\u const不知道列名,那么您可以这样做。因此,您的解决方案不可行,那么没有动态SQL就没有解决方案。SQL server查询处理器需要在编译时知道列名,这是无法避免的。当然,您可以在构建动态SQL之前检查列的存在,以避免出现错误。