2012-08-14 37 views
1

我试图只替换我们公司数据库中的一部分字符串。我试图更新的列是MERGECODES (varchar(20),null)。这个列的典型值是'M, GPE, T'SQL REPLACE给出错误:'字符串或二进制数据将被截断。'

我想用KD代替T的每个实例,但是我得到下面的错误。它将允许我改变任何具有相同字符数或更少的字符,例如,它允许我用K替换T,但不能用KD替换。任何帮助将不胜感激。多谢你们!

代码:

UPDATE GoldMine.dbo.CONTACT1 
SET MERGECODES = REPLACE(MERGECODES, 'T', 'KD') 

错误:

Msg 8152, Level 16, State 14, Line 1
String or binary data would be truncated. The statement has been terminated.

+1

如果你确实在'varchar(20)'列中有'M,GPE,T',并且执行了'REPLACE',那么这个工作没有任何问题。我在想,你可能正在更新**太多的行**,并且你的'UPDATE'语句命中的行中至少有一行在'REPLACE'的列中包含了太多的字符。尝试使用'WHERE id = 42'或其他子句 - 以便更新**只有一行,您知道这是行。 – 2012-08-14 15:05:17

+0

感谢marc_s,这是有道理的。 – ajodom10 2012-08-14 15:33:39

+0

**为什么有人投下这个问题?如果我在这里做错了,请告诉我。** – ajodom10 2012-08-14 15:34:47

回答

6

你需要增加你的数据类型的大小。

现在你有varchar(20)

如果数据长度为20个字符,而您将1个字符替换为2,那么这将是21个字符长度,这将导致truncation

尝试增加您的数据类型为varchar(50)例如,这应该可以解决您的问题。

相关问题