日期:2014-05-18  浏览次数:20477 次

替换ntext字段里面的连接
表名:refurbish

字段:refurbish_subject   (ntext类型)

因为这个字段里面保存很多连接。我现在想把连接替换掉,但是总报这个错误:
服务器:   消息   8116,级别   16,状态   1,行   1
函数   replace   的参数   1   的数据类型   ntext   无效。

求高手指点


语句如下:
update   refurbish   set   refurbish_subject   =   replace(refurbish_subject, ' <a   href=/zs/zs-detail.asp?id= ', ' ')

在说明一下 <a   href=/zs/zs-detail.asp?id=   这后面是一些可以变的ID号,我想问一下这个这么用正则替换~~~




------解决方案--------------------
update refurbish set refurbish_subject = replace(Convert(varchar(1000),refurbish_subject), ' <a href=/zs/zs-detail.asp?id= ', ' ')
------解决方案--------------------
text/ntext不能用replace直接替换

你可以抽出数据到程序 当字符串处理后 再update回去

------解决方案--------------------
先转成varchar类型,或用cast也可以的

update refurbish set refurbish_subject = replace(cast(refurbish_subject as varchar(1000))), ' <a href=/zs/zs-detail.asp?id= ', ' ')

------解决方案--------------------
update refurbish
set refurbish_subject = replace(cast(refurbish_subject as varchar(1000)), ' <a href=/zs/zs-detail.asp?id= ', ' ')

楼上的多了一个 )
------解决方案--------------------
额外写个程序在外面替换了再写回去比较稳妥
------解决方案--------------------
我测试过

update refurbish
set refurbish_subject = replace(cast(refurbish_subject as varchar(1000)), ' <a href=/zs/zs-detail.asp?id= ', ' ')

这个可以更新成功
------解决方案--------------------
如果效率要求不高

update refurbish
set 新字段 = substring(refurbish_subject,PATINDEX( '%?id=% ',refurbish_subject) + 4,PATINDEX( '%> % ',refurbish_subject) - PATINDEX( '%?id=% ',refurbish_subject) - 4)