【发布时间】:2012-08-14 14:48:26
【问题描述】:
我正在尝试仅替换我们公司数据库中字符串的一部分。我要更新的列是MERGECODES (varchar(20),null)。该列的典型值类似于'M, GPE, T'。
我想用KD 替换T 的每个实例,但出现以下错误。它将允许我更改具有相同或更少字符数的任何内容,例如,它将允许我将 T 替换为 K 而不是 KD。任何帮助将不胜感激。谢谢大家!
代码:
UPDATE GoldMine.dbo.CONTACT1
SET MERGECODES = REPLACE(MERGECODES, 'T', 'KD')
错误:
消息 8152,第 16 层,第 14 州,第 1 行
字符串或二进制数据将被截断。 声明已终止。
【问题讨论】:
-
如果您在
varchar(20)列中确实有M, GPE, T,并且您执行您的REPLACE- 它可以正常工作。我认为您可能正在更新 太多行,并且您的UPDATE语句命中的行中至少有一行在该列中包含太多字符,REPLACE无法正常工作。尝试使用WHERE id = 42或其他子句 - 为了更新 仅一行,您知道这是可以的。 -
感谢 marc_s 说得通。
-
为什么有人对这个问题投了反对票?如果我在这里做错了什么,请告诉我。
标签: sql-server replace truncate