[mssql]谈谈SQL中函数replace和stuff的使用及区别

在以前,如果要对网站中所有文章进行字符处理,一般我都是用网页写代码,步骤如下:

1.先查询,判断是否包含此字符--->   2.然后用函数替换成需要的字符--->    3.最后update数据。

其实,这种步骤是可行的。但是这样也会有一个问题,就是执行的效率太低太低,几千条数据都会卡好一会儿。

后来在网上发现mssql数据库自带有替换函数。只要一条语句,世界顷刻间安静了……

下面我谈谈SQL字符替换函数replace和stuff的使用及区别

=================================================

1.replace(字符串表达式1,字符串表达式2,字符串表达式3):

用字符串表达式3替换字符串表达式1中出现的所有字符串表达式2的匹配项。返回新的字符串。

例如:select replace('abcttabchhabc','abc','123')

返回 123tt123hh123

总结:replace()函数可以多次替换,只要是在字符串表达式1中有字符串表达式2的出现,最后都会被替换成字符串表达式3.

2.stuff(字符串表达式1,开始位置,长度,字符串表达式2):

在字符串表达式1中在指定的开始位置删除指定长度的字符,并在指定的开始位置处插入字符串表达式2。返回新字符串。

例如:select stuff('abcdef',2,2,'123')

返回 a123def

总结:stuff()函数只能一次性替换字符串表达式1中连续长度的字符串,不能循环替换。

==================================================

最后,我发现这函数对ntext数据库类型会报错!

再查资料,果真如此!以下是解决的方法:

UPDATE 表 SET 字段=REPLACE(cast(字段 AS varchar(8000)),'被替换的内容','将要替换成的内容')

说到底其实就是将ntext类型转化为函数可接受的类型,如上面的varchar类型。

varchar(8000)是字段类型。8000是个很猛的字段,可以根据自己的实际情况改动!

 

好啦,上面就是本人对 SQL替换函数replace和stuff的一些使用小结,希望能给有需要的朋友带来帮助

posted @ 2012-06-26 11:32  Net-Spider  阅读(1407)  评论(0)    收藏  举报