insert article(title,content) select title1+'等','
1<div align="center"><font size="4">'+title1+'</font></div>
1<br/>
'+content1+'
1<div align="center"><font size="4">'+title2+'</font></div>
1<br/>
'+content2+'
1<div align="center"><font size="4">'+title3+'</font></div>
1<br/>
'+content3+'
1<div align="center"><font size="4">'+title4+'</font></div>
1<br/>
'+content4 from news
想从news表中选出content1,content2,content3,content4字段中的内容加到article表中的content字段中,但出现如下错误:
服务器: 消息 403,级别 16,状态 1,行 1
对数据类型而言运算符无效。运算符为 add,类型为 ntext。
content,content1,content2,content3,content4字段的类型为ntext
如何解决?
---------------------------------------------------------------
--用游标
declare @p binary(16),@p1 binary(16),@p2 binary(16),@p3 binary(16),@p4 binary(16)
,@t nvarchar(4000)
,@t1 nvarchar(4000),@t2 nvarchar(4000),@t3 nvarchar(4000),@t4 nvarchar(4000)
declare tb cursor local for
select title1+'等'
,'
1<div align="center"><font size="4">'+title1+'</font></div>
'
,textptr(content1)
,'
1<div align="center"><font size="4">'+title2+'</font></div>
'
,textptr(content2)
,'
1<div align="center"><font size="4">'+title3+'</font></div>
'
,textptr(content3)
,'
1<div align="center"><font size="4">'+title4+'</font></div>
'
,textptr(content4)
from news
open tb
fetch tb into @t,@t1,@p1,@t2,@p2,@t3,@p3,@t4,@p4
while @@fetch_status=0
begin
insert article(title,content) values(@t,@t1)
select @p=textptr(content) from article
where id=@@identity --如果 article 表没有自增字段,则不要这个条件(效果一样,但影响效率)
updatetext article.content @p null 0 news.content1 @p1
updatetext article.content @p null 0 @t2
updatetext article.content @p null 0 news.content2 @p2
updatetext article.content @p null 0 @t3
updatetext article.content @p null 0 news.content3 @p3
updatetext article.content @p null 0 @t4
updatetext article.content @p null 0 news.content4 @p4
fetch tb into @t,@t1,@p1,@t2,@p2,@t3,@p3,@t4,@p4
end
close tb
deallocate tb