电脑安全

您当前的位置:主页 > 电脑安全 >

MSSQL Server数据库内容替换方法-网络编程

来源:[db:来源]标题:   字符串    编辑:电脑技术全能网 时间:2019-09-18 12:28

原标题:MSSQL Server数据库内容替换方法-网络编程
   中心提醒:在应用iwms体系的进程中,咱们会常常碰到数据内容的调换操纵  在应用iwms体系的进程中,咱们会常常碰到数据内容的调换操纵。在告知各人怎样调换数据内容之前,我倡议各人先懂得一下SQL Server数据库的数据存储范例:  SQL Server数据范例:  以上是数据库的基本常识,是做网站的友人都应当晓得的内容(不管你应用甚么cms),以是倡议各人都耐烦看一下。  数据调换个别都产生在字符串数据字段中,除了ntext范例字段之外的其余字符串数据字段都能够应用以下的sql语句停止调换:  update [swf_Upload] set [Dir] = replace([Dir],'200901/14','200901/15')update [swf_Content] set [Description] =replace([Description],'200901/14','200901/15')update [swf_Content_01] set [content] = replace(convert(varchar(4000), [content]),'200901/14','200901/15')  UPDATE [数据表名] SET [字段名] = REPLACE([字段名],'老字符串','新字符串')  比方,调换iwms文章数据表(iwms_news)中的题目字段(title)的局部内容,咱们应当这么写:  UPDATE [iwms_news] SET [title] = REPLACE([title],'老字符串','新字符串')  下面的sql语句在iwms后盾的sql履行外面能够间接履行,基础上能够搞定全部的调换操纵,然而因为ntext数据长度的起因,这一方式对ntext范例字段有效。那咱们该用甚么方式调换ntext范例字段的内容呢?方式有两种:  一是范例转换,将ntext范例转换为varchar范例,而后再用replace。合适于单页内容最大长度<4000的文章。  update [数据表名] set [字段名] = replace(convert(varchar(4000), [字段名]),'老字符串','新字符串')  比方,调换iwms文章数据表(iwms_news)中的题目字段(content,ntext范例字段)的局部内容,咱们应当这么写:  update iwms_news set [content] = replace(convert(varchar(4000),[content]),'老字符串','新字符串')  二是SQL Server存储进程  declare @ptr varbinary(16)  declare @artId int  declare @Position int,@len int  set @len = datalength('老字符串')  declare wux_Cursor scroll Cursor  for  select textptr([字段名]),[key字段名] from [数据表名]  for read only  open wux_Cursor  fetch next from wux_Cursor into @ptr,@artId  while @@fetch_status=0  begin  select @Position=patindex('%老字符串%',[字段名]) from [数据表名] where [key字段名]=@artId  while @Position>0  begin  set @Position=@Position-1  updatetext [数据表名].[字段名] @ptr @Position @len '新字符串'  select @Position=patindex('%老字符串%',[字段名]) from [数据表名] where [key字段名]=@artId  end  fetch next from wux_Cursor into @ptr,@artId  end  close wux_cursor  deallocate wux_cursor  go  比方,调换iwms文章数据表(iwms_news)中的题目字段(content,ntext范例字段)的局部内容,咱们应当这么写  declare @ptr varbinary(16)  declare @artId int  declare @Position int,@len int  set @len = datalength('老字符串')  declare wux_Cursor scroll Cursor  for  select textptr([content]),[articleid] from iwms_news  for read only  open wux_Cursor  fetch next from wux_Cursor into @ptr,@artId  while @@fetch_status=0  begin  select @Position=patindex('%老字符串%',[content]) from iwms_news where [articleid]=@artId  while @Position>0  begin  set @Position=@Position-1  updatetext iwms_news.[content] @ptr @Position @len '新字符串'  select @Position=patindex('%老字符串%',[content]) from iwms_news where [articleid]=@artId  end  fetch next from wux_Cursor into @ptr,@artId  end  close wux_cursor  deallocate wux_cursor  go  ok了,须要留神的是:存储进程只能在SQL Server查问剖析器中履行。  别的,因为iwms数据库构造的成绩,有分页的文章内容须要前后对iwms_news和iwms_pages两个表内容停止调换操纵。

上一篇:MSSQL SERVER中易混淆的数据类型-网络编程

下一篇:没有了