您的位置:首页 > 数据库

SQL Server中利用正则表达式替换字符串

2017-04-25 18:17 555 查看
博客原文来源:http://blog.csdn.net/return_false/article/details/11984613

1 --如果存在则删除原有函数
2 IF OBJECT_ID(N'dbo.RegexReplace') IS NOT NULL
3     DROP FUNCTION dbo.RegexReplace
4 GO
5 --开始创建正则替换函数
6  CREATE FUNCTION dbo.RegexReplace
7 (
8     @string VARCHAR(MAX),   --被替换的字符串
9     @pattern VARCHAR(255),  --替换模板
10     @replacestr VARCHAR(255),   --替换后的字符串
11     @IgnoreCase INT = 0 --0区分大小写 1不区分大小写
12 )
13 RETURNS VARCHAR(8000)
14 AS
15 BEGIN
16     DECLARE @objRegex INT, @retstr VARCHAR(8000)
17     --创建对象
18     EXEC sp_OACreate 'VBScript.RegExp', @objRegex OUT
19     --设置属性
20     EXEC sp_OASetProperty @objRegex, 'Pattern', @pattern
21     EXEC sp_OASetProperty @objRegex, 'IgnoreCase', @IgnoreCase
22     EXEC sp_OASetProperty @objRegex, 'Global', 1
23     --执行
24     EXEC sp_OAMethod @objRegex, 'Replace', @retstr OUT, @string, @replacestr
25     --释放
26     EXECUTE sp_OADestroy @objRegex
27     RETURN @retstr
28 END
29 GO
30 --保证正常运行的话,需要将Ole Automation Procedures选项置为1
31 EXEC sp_configure 'show advanced options', 1
32 RECONFIGURE WITH OVERRIDE
33 EXEC sp_configure 'Ole Automation Procedures', 1
34 RECONFIGURE WITH OVERRIDE


复制以上代码,到SQL中执行

然后测试,如下

1 --2.将姓名倒过来
2 SELECT dbo.RegexReplace('John Smith', '([a-z]+)\s([a-z]+)', '$2,$1',1)
3 /*
4 --------------------------------------
5 Smith,John
6 */


在自己的项目中测试:查询结果去掉html标签

1 Select dbo.RegexReplace('<p><span style="font-size: 14px; line-height: 115%; font-family: 宋体;">(1)您手脚发凉吗?</span><br/></p>','\<[^<>]*\>','',1)


结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: