在以前,如果要对网站中所有文章进行字符处理,一般我都是用网页写代码,步骤如下:
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是个很猛的字段,可以根据自己的实际情况改动!