0

我是自学 SQL Server 的。我最近一直在使用替换脚本。我必须替换varchar列内的字符串。

我需要更改的一个示例是15151500001500000000我需要将最后一个更改0010

这是我正在使用的脚本:

UPDATE xxxxx
   SET craftname = REPLACE(craftname, 00, 10)
 WHERE craftname like '%00'

但是它每次都给我这个错误

字符串或二进制数据将被截断。

我在网上搜索,从我看到的最常见的原因是该列变得越来越大,但在这里我用 2 位数字替换 2 位数字,所以这不应该发生。

有任何想法吗?

4

1 回答 1

4

尝试使用字符串而不是整数:

UPDATE xxxxx
   SET craftname = REPLACE(craftname, '00', '10')
 WHERE craftname like '%00';

您的版本的问题是 every0被替换为10,这增加了字符串的长度。使用“合理”表示将整数转换为字符串,因此00变为'0',而不是'00'

上面仍然不会做你想要的,因为它会替换每次出现的00with 10。我包含它是为了向您展示如何修复运行时错误。

如果您只想更改最后两个字符,请不要使用REPLACE(). 反而:

UPDATE xxxxx
   SET craftname = LEFT(craftname, len(craftname) - 2) + '10'
 WHERE craftname like '%00';
于 2014-12-27T21:36:01.263 回答