0

我需要将图像列的值从一行复制到另一行。我试图为此使用变量,但我什至不能声明那种类型的变量。SQL Server 返回此错误消息:

消息 2739,级别 16,状态 1,第 1 行
text、ntext 和 image 数据类型对于局部变量无效。

4

1 回答 1

3

好吧,image数据类型已被弃用,因此您应该更改表和所有要使用的代码varbinary(max)(您必须在某个时候这样做,越快越好)。同时,一个简单的解决方法是varbinary(max)在您的变量中使用:

DECLARE @x TABLE(i IMAGE);

INSERT @x SELECT 0x0045;

DECLARE @y VARBINARY(MAX);

SELECT @y = i FROM @x;

PRINT @y;

-- UPDATE sometable SET somecolumn = @y WHERE ...;

但是,如果您正在执行更新,为什么首先需要使用中间变量?您可以很容易地连接同一张表中的两行...

UPDATE t
  SET t.image_column = s.image_column
  FROM dbo.table AS t
  INNER JOIN dbo.table AS s
  ON t.key = something
  AND s.key = something_else;

样本:

DECLARE @x TABLE(x INT PRIMARY KEY, i IMAGE);

INSERT @x SELECT 1,0x0045;
INSERT @x SELECT 2,0x0055;

UPDATE x SET x.i = y.i
  FROM @x AS x
  INNER JOIN @x AS y
  ON x.x = 1 AND y.x = 2;

SELECT x,i FROM @x;

结果:

x   i
--- ------
1   0x0055
2   0x0055
于 2013-02-07T01:33:01.250 回答