2012-08-14 83 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)例如,這應該可以解決您的問題。

相關問題