我需要将图像列的值从一行复制到另一行。我尝试使用变量,但我甚至不能声明那种变量。 SQL Server返回此错误消息:
Msg 2739,Level 16,State 1,Line 1
text,ntext和image数据类型对局部变量无效。
答案 0 :(得分:2)
我们已弃用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