betway必威-betway必威官方网站
做最好的网站

Server数据库内容替换方法,存储过程替换text

核心提示:在使用iwms系统的过程中,我们会经常遇到数据内容的替换操作

/*
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]betway必威官方网站,) 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

一、问题描述: 1。在Sql Server 中,ntext/text/image 字段不允许应用replace函数替换内容; 2。通过convert字段转换,可以把ntext字段转换为varchar,然后用Relpace函数替换,不过,此方法,对于字段长度大于8000的ntext字段无效。 二、问题解决 整理通用存储过程,代码如下: 复制代码 代码如下: CREATE procedure [dbo].[Proc_UpdateNTextField] @TargetTable nvarchar(1000), --目标表名 @TargetField nvarchar(1000), --目标字段名 @PKField nvarchar(1000), --该表主键字段名 @otxt nvarchar(1000), --需要替换的字符串 @ntxt nvarchar(1000) --替换后的字符串 as begin declare @SqlStr nvarchar(4000) set @SqlStr = ' declare @txtlen int ' set @SqlStr = @SqlStr ' set @txtlen = len(''' @otxt ''') ' set @SqlStr = @SqlStr ' declare @pos int ' set @SqlStr = @SqlStr ' set @pos = 0 ' set @SqlStr = @SqlStr 'declare curs cursor local fast_forward for select ' set @SqlStr = @SqlStr @PKField ' , textptr(' @TargetField ') from ' @TargetTable ' where ' @TargetField ' like ''%' @otxt '%''' set @SqlStr = @SqlStr ' declare @ptr binary(16) ' set @SqlStr = @SqlStr ' declare @id char(32) ' set @SqlStr = @SqlStr ' open curs ' set @SqlStr = @SqlStr ' fetch next from curs into @id, @ptr ' set @SqlStr = @SqlStr ' while @@fetch_status = 0 ' set @SqlStr = @SqlStr ' begin ' set @SqlStr = @SqlStr ' select @pos= patindex(''%' @otxt '%'',ProductDesc) from ProductTemp where ProductID=@id ' set @SqlStr = @SqlStr ' while @pos0 ' set @SqlStr = @SqlStr ' begin ' set @SqlStr = @SqlStr ' set @pos=@pos-1 ' set @SqlStr = @SqlStr ' updatetext ' @TargetTable '.' @TargetField ' @ptr @pos @txtlen ''' @ntxt ''' ' set @SqlStr = @SqlStr ' select @pos= patindex(''%' @otxt '%'',ProductDesc) from ProductTemp where ProductID=@id ' set @SqlStr = @SqlStr ' end ' set @SqlStr = @SqlStr ' fetch next from curs into @id, @ptr ' set @SqlStr = @SqlStr ' end ' set @SqlStr = @SqlStr ' close curs ' set @SqlStr = @SqlStr ' deallocate curs ' EXECUTE sp_executesql @SqlStr end

在使用iwms系统的过程中,我们会经常遇到数据内容的替换操作。在告诉大家如何替换数据内容之前,我建议大家先了解一下SQL Server数据库的数据存储类型:

SQL Server数据类型:

以上是数据库的基础知识,是做网站的朋友都应该知道的内容,所以建议大家都耐心看一下。

数据替换一般都发生在字符串数据字段中,除了ntext类型字段以外的其他字符串数据字段都可以使用以下的sql语句进行替换:

本文由betway必威发布于编程开发,转载请注明出处:Server数据库内容替换方法,存储过程替换text

TAG标签: betway必威
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。