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_expression1' , 'string_expression2' , 'string_expression3' )
参数说明
'string_expression1'
待搜索的字符串表达式。string_expression1 可以是字符数据或二进制数据。
'string_expression2'
待查找的字符串表达式。string_expression2 可以是字符数据或二进制数据。
'string_expression3'
替换用的字符串表达式。string_expression3 可以是字符数据或二进制数据。
通俗理解即格式为:
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/%'