新萄京编程

 新萄京编程     |      2020-04-15

UPDATE [iwms_news] SET [title] = REPLACE([title],老字符串,新字符串) 上面的sql语句在iwms后台的sql执行里面可以直接执行,基本上可以搞定所有的替换操作,但是由于ntext数据长度的原因,这一方法对ntext类型字段无效。那我们该用什么方法替换ntext类型字段的内容呢?方法有两种:

/*
author:amjn
date:2003-03-28
version:1.0
function:替换text,ntext列中的字符串(不支持中文)
*/
declare @ptr varbinary(16)
declare @amjnId int
declare @Position int,@len int
set @len=datalength('ILOVEHJL')  
declare wux_Cursor scroll Cursor
for
select textptr([Name]),[amjnId] from USA201
for read only
open wux_Cursor
fetch next from wux_Cursor into @ptr,@amjnId
while @@fetch_status=0
begin
  select @Position=patindex('%ILOVEHJL%',[Name]) from USA201 where [amjnId]=@amjnId
  while @Position>0
  begin
    set @Position=@Position-1
    updatetext USA201.[Name] @ptr @Position @len 'i love hjl'
    select @Position=patindex('%ILOVEHJL%',[Name]) from USA201 where [amjnId]=@amjnId
  end
  fetch next from wux_Cursor into @ptr,@amjnId
end
close wux_cursor
deallocate wux_cursor
go

update [数据表名] set [字段名] = replace(convert(varchar(4000), [字段名]),老字符串,新字符串) 比如,替换iwms文章数据表中的标题字段的部分内容,我们应该这么写:

update iwms_news set [content] = replace(convert(varchar(4000),[content]),老字符串,新字符串)

UPDATE [数据表名] SET [字段名] = REPLACE([字段名],老字符串,新字符串) 比如,替换iwms文章数据表中的标题字段的部分内容,我们应该这么写:

另外,由于iwms数据库结构的问题,有分页的文章内容需要先后对iwms_news和iwms_pages两个表内容进行替换操作。

一是类型转换,将ntext类型转换为varchar类型,然后再用replace。适合于单页内容最大长度4000的文章。

二是SQL Server存储过程

SQL Server数据类型: