try:
update
表名
set
newsid=newsid|convert(nchar,
id);
答案补充
试一下把数据库的newsid类型改为varchar
ALTER
TABLE
表名
ALTER
COLUMN
newsid
varchar(20);
然后再
update
表名
set
newsid=newsid+convert(varchar,
id);
答案补充
NCHAR是定长字符
当你的列定为NCHAR(10)时,
例如某行原insert
into
表名(newsid)
values('No')
插入的newsid会成为'No
'(后面补全8个空格)
所以当你作字符串拼接时,会拼出
'No
1'(一共11位,超出了原定义的10位)
所以就报错了。
因为你在convert时,没有写长度,所以默认为1,会只取一个值。
建议使用varchar(10)。
不知道你的newsid字段的长度够不够,改为:
update 表名set newsid = rtrim(newsid) + convert(nchar,isnull(id,0));
update 表名set newsid =oldsid1+oldsid2 where "条件"