设置声明的参数值和 CONCAT 列名称



我有列字符 1、字符 2、字符 3 的表.....其中每一列都包含一些值。我声明了变量 @i,在 while 循环中,我试图将其连接到 Char 表列名。 此外,我在查询中声明了参数@current,然后尝试在查询中设置其值。

set @tmp = cast(@i as varchar(2))
select @current = 'Char' + @tmp
from SerialNumberFormat
where Example = 'XXXXXXXXXX'

当我执行查询时@current具有值 Char1、Char2、Char3...等,而是列的值。 如何在@current中设置列值而不是列名称?

select @current = Concat(Char1, Char2, Char3)
from SerialNumberFormat
where Example = 'X59AA419010045'

我找到并适合我的解决方案正在执行sp_executesql存储过程

set @SQL = N'select @currentOUT = Char' + @tmp + ' from SerialNumberFormat
where Example = ''XXXXXXXXX'''
SET @ParmDefinition = N'@currentOUT nvarchar(10) OUTPUT' 
exec sp_executesql @SQL, @ParmDefinition, @currentOUT = @current OUTPUT
select @current

像这样的动态SQL可能适合你

Declare @i int = 5
Declare @tmp varChar (10) = @i
Declare @Sql nVarChar(Max) =    'select Char' + @tmp + '
from SerialNumberFormat
where Example = ''X59AA419010045'''
exec sp_executesql @Sql

最新更新