支付宝扫码
领取余额宝体验金

轻云博客 > SQL Server数据库设计 > SQL中函数replace和stuff的使用及区别

SQL中函数replace和stuff的使用及区别

作者:Aisencici / 日期:2017-3-25 9:10:00 / 分类:SQL Server数据库设计 / 浏览:807

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

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是个很猛的字段,可以根据自己的实际情况改动!


本文标签:无锡网站建设,replace和stuff
From:http://www.travel-day.cn/
分享到: