SQL 2005 替换指定列中的某一字段为其它字段

数据库中有一个存放新闻的表,新闻的内在存放在articlebody列中,其中有一段内容如下:

<a href="/search/article/0/财经" target="_blank" title="财经">财经</a>

现需要将“/search/article/0/” 字段修改为“http://www.xxx.com/search?k=”

本来可以用SQL 2005导出功能,将表导出成文件,替换后再导入,但由于安装SQL的问题,导入导出不可用,因此只能用命令了

命令格式如下:

REPLACE ( 'string_e­xpression1' , 'string_e­xpression2' , 'string_e­xpression3' ) 
参数说明 
'string_e­xpression1' 
待搜索的字符串表达式。string_e­xpression1 可以是字符数据或二进制数据。 
'string_e­xpression2' 
待查找的字符串表达式。string_e­xpression2 可以是字符数据或二进制数据。 
'string_e­xpression3' 
替换用的字符串表达式。string_e­xpression3 可以是字符数据或二进制数据。

通俗理解即格式为: 
Update 表名 SET 要替换的列=REPLACE(要替换的列,被替换的字符,替换后的字符) 
示例SQL语句: 
Update tableName SET columeName = REPLACE(columeName, 'a', 'b')

 

实例:

Update dbo.Cms_ArticleContent SET articlebody = REPLACE(articlebody, '/search/article/0/', 'http://www.xxx.com/search?k=') where articlebody like '%/search/article/0/%'
执行时提示错误:“函数 replace 的参数 1 的数据类型 text 无效”

原因:!*!*!*!注意:articlebody必须改为ntext类型,为text类型时会有内部错误,这是个bug
replace替换字段为text或者ntext时,必须转换类型后才能替换

解决方法:

Update dbo.Cms_ArticleContent SET articlebody = REPLACE(cast(articlebody as varchar(8000)), '/search/article/0/', 'http://www.xxx.com/search?k=') where articlebody like '%/search/article/0/%'

posted @ 2013-05-29 14:35  sonheri  阅读(351)  评论(0编辑  收藏  举报