【发布时间】:2019-12-12 18:07:00
【问题描述】:
我有一个包含 Char1、Char2、Char3 列的表.....这些列中的每一个都包含一些值。我声明了变量 @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 中设置列值而不是列名?
【问题讨论】:
-
你需要使用动态SQL。但是您可能会思考为什么表格中有这样的列。数据最好用一列和单独的行表示值。
-
@GordonLinoff 你是对的,但是表已经创建并且里面有很多数据。这不是很好的解决方案,但我必须处理它,因为我无法更改它
-
我不能说我真的理解你的目标。一些示例数据和预期结果会有所帮助。
-
@Larnu 我编辑了这篇文章。希望现在更清楚了
-
选择@current = Concat(Char1, Char2, Char3)
标签: sql sql-server database