中国网格虚拟主机不满意退款承诺!
24小时咨询热线:021-51095771  51087627
中国网格
快速建站 只选网格
域名+空间+数据库+维护 企业网站整体服务商
支付方式数 据 库优惠套餐
您当前的位置 
首页
快速建站
技术
MSSQL
正文

MSSQL Server数据库内容替换方法

发布时间:2012-10-23 16:19:02| www.cnwg.cn | 文章标签:MSSQL,Server,替换

在使用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。适合于单页内容Z大长度<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两个表内容进行替换操作。


数据库空间

数据库存储空间

价格:200元/100M

MySql,SQL可选择

参考资料

我要评价

评价发表成功

错误提示
关于网格 | 联系方式 | 网站地图 | 客户中心 | 网格招聘 | 代理合作 | 支付方式 | 帮助中心
中国网格所属上海羽灿计算机科技有限公司版权所有 Copyright©cnwg.cn 2003-2013,All Rights Reserved.

联系电话:021-51095771 021-51087627 传真:021-51087637-202
版权所有:上海羽灿计算机科技有限公司 中国网格(cnwg.cn/cnwg.cc)©2003-2013 All Rights Reserved.
地址:上海市银都路3399弄533号 邮编:201108 ICP经营许可证编号:沪B2-20060019 沪ICP备06012189号

  • 经营性网站
    备案信息
  • 网络110
    报警服务
  • 文明办网
    先进单位
  • 支付宝
    特约商家
  • 网络社区
    征信网
  • 上海工商
    网上亮照