日期:2014-05-17  浏览次数:20565 次

MsSQL 在字段后加固定字符串的问题
a表:ashes_keep

keep_code   old_palce(类型varchar(50))
1           Null
2           6楼
3           Null

b表:temp2

keep_code
2
3

目的:更新a表中keep_code与b表keep_code相同的记录,在a表中的old_palce字段后加上字符串“ 2012登报”
代码如下:
update ashes_keep  
set old_palce=a.old_palce+' 2012年登报'
from ashes_keep a 
inner join temp2 b on a.keep_code=b.keep_code 

出现错误信息:将截断字符串或二进制数据,不知为何?

------解决方案--------------------
截断说明你的长度不够,你自己查一下,你的varchar(50)类型,最多存储25个汉字
如果有汉字的最好用nvarchar类型
还有就是修改时,null+字符=null,这里要转换一下isnull(a.old_palce,'')+' 2012年登报'
或者你确实是要填null就不用了
------解决方案--------------------
一个是你可以自己查询一下,汉字按两个字节算,字符按1个,这样加上你后来的后缀是否超过长度,
另一个是你可以查一下这个表是否有update触发器,是否相应的操作了其他表而造成截断