我有列字符 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