SQL更新和替换

时间:2010-11-06 14:50:54

标签: sql

有人可以引导我朝着正确的方向前进。我正在尝试更新并替换数据库中的列。这是我正在使用的SQL代码(SQL 2008 Express Edition)。

*update GameList set image = replace(Image, 'NintendoDS', 'Nintendo DS') WHERE Image LIKE '%NintendoDS%'*

图像
/webimages/NintendoDS/boxmonstersvsaliens.jpg

这是我得到的错误:
字符串或二进制数据将被截断。 该声明已被终止。

2 个答案:

答案 0 :(得分:5)

问题是有一行添加额外空格(如果重复测试字符串,则为空格)会使得结果字符串大于列大小。

例如,如果列声明为varchar(20),则您尝试添加大小为21的字符串

答案 1 :(得分:3)

有两件事情浮现在脑海中。首先是你的专栏不够长;但我怀疑情况并非如此,这将通过使用:

来解决
update GameList set image = rtrim(replace(Image, 'NintendoDS', 'Nintendo DS')) 
WHERE Image LIKE '%NintendoDS%'

如果您的列填充了尾随空白,则原始替换将失败,因为添加额外空间超出了最大列长度。 R-Trimming结果可以防止出现此问题。