验证的代码就不贴了,懒惰,呵呵
1SET ANSI_NULLS ON
2GO
3SET QUOTED_IDENTIFIER ON
4GO
5CREATE FUNCTION [dbo].[find_regular_expression]
6 (
7 @source varchar(5000), --需要匹配的源字符串
8 @regexp varchar(1000), --正则表达式
9 @ignorecase bit = 0 --是否区分大小写,默认为false
10 )
11RETURNS bit --返回结果0-false,1-true
12AS
13 BEGIN
14
15 --0(成功)或非零数字(失败),是由 OLE 自动化对象返回的 HRESULT 的整数值。
16 DECLARE @hr integer
17
18--用于保存返回的对象令牌,以便之后对该对象进行操作
19 DECLARE @objRegExp integer DECLARE @objMatches integer
20
21--保存结果
22 DECLARE @results bit
23
24/*
25创建 OLE 对象实例,只有 sysadmin 固定服务器角色的成员才能执行 sp_OACreate,并确定机器中有VBScript.RegExp类库
26*/
27 EXEC @hr = sp_OACreate 'VBScript.RegExp', @objRegExp OUTPUT
28 IF @hr <> 0 BEGIN
29 SET @results = 0
30 RETURN @results
31 END
32/*
33以下三个分别是设置新建对象的三个属性。下面是'VBScript.RegExp'中常用的属性举例:
34 Dim regEx,Match,Matches '建立变量。
35 Set regEx = New RegExp '建立一般表达式。
36 regEx.Pattern= patrn '设置模式。
37 regEx.IgnoreCase = True '设置是否区分大小写。
38 regEx.Global=True '设置全局可用性。
39 set Matches=regEx.Execute(string) '重复匹配集合
40 RegExpTest = regEx.Execute(strng) '执行搜索。
41 for each match in matches '重复匹配集合
42 RetStr=RetStr &"Match found at position "
43 RetStr=RetStr&Match.FirstIndex&".Match Value is '"
44 RetStr=RetStr&Match.Value&"'."&vbCRLF Next
45 RegExpTest=RetStr
46
47*/
48 EXEC @hr = sp_OASetProperty @objRegExp, 'Pattern', @regexp
49 IF @hr <> 0 BEGIN
50 SET @results = 0
51 RETURN @results
52 END
53 EXEC @hr = sp_OASetProperty @objRegExp, 'Global', false
54 IF @hr <> 0 BEGIN
55 SET @results = 0
56 RETURN @results
57 END
58 EXEC @hr = sp_OASetProperty @objRegExp, 'IgnoreCase', @ignorecase
59 IF @hr <> 0 BEGIN
60 SET @results = 0
61 RETURN @results
62 END
63--调用对象方法
64 EXEC @hr = sp_OAMethod @objRegExp, 'Test', @results OUTPUT, @source
65 IF @hr <> 0 BEGIN
66 SET @results = 0
67 RETURN @results
68 END
69--释放已创建的 OLE 对象
70 EXEC @hr = sp_OADestroy @objRegExp
71 IF @hr <> 0 BEGIN
72 SET @results = 0
73 RETURN @results
74 END
75 RETURN @results
76 END
77
2GO
3SET QUOTED_IDENTIFIER ON
4GO
5CREATE FUNCTION [dbo].[find_regular_expression]
6 (
7 @source varchar(5000), --需要匹配的源字符串
8 @regexp varchar(1000), --正则表达式
9 @ignorecase bit = 0 --是否区分大小写,默认为false
10 )
11RETURNS bit --返回结果0-false,1-true
12AS
13 BEGIN
14
15 --0(成功)或非零数字(失败),是由 OLE 自动化对象返回的 HRESULT 的整数值。
16 DECLARE @hr integer
17
18--用于保存返回的对象令牌,以便之后对该对象进行操作
19 DECLARE @objRegExp integer DECLARE @objMatches integer
20
21--保存结果
22 DECLARE @results bit
23
24/*
25创建 OLE 对象实例,只有 sysadmin 固定服务器角色的成员才能执行 sp_OACreate,并确定机器中有VBScript.RegExp类库
26*/
27 EXEC @hr = sp_OACreate 'VBScript.RegExp', @objRegExp OUTPUT
28 IF @hr <> 0 BEGIN
29 SET @results = 0
30 RETURN @results
31 END
32/*
33以下三个分别是设置新建对象的三个属性。下面是'VBScript.RegExp'中常用的属性举例:
34 Dim regEx,Match,Matches '建立变量。
35 Set regEx = New RegExp '建立一般表达式。
36 regEx.Pattern= patrn '设置模式。
37 regEx.IgnoreCase = True '设置是否区分大小写。
38 regEx.Global=True '设置全局可用性。
39 set Matches=regEx.Execute(string) '重复匹配集合
40 RegExpTest = regEx.Execute(strng) '执行搜索。
41 for each match in matches '重复匹配集合
42 RetStr=RetStr &"Match found at position "
43 RetStr=RetStr&Match.FirstIndex&".Match Value is '"
44 RetStr=RetStr&Match.Value&"'."&vbCRLF Next
45 RegExpTest=RetStr
46
47*/
48 EXEC @hr = sp_OASetProperty @objRegExp, 'Pattern', @regexp
49 IF @hr <> 0 BEGIN
50 SET @results = 0
51 RETURN @results
52 END
53 EXEC @hr = sp_OASetProperty @objRegExp, 'Global', false
54 IF @hr <> 0 BEGIN
55 SET @results = 0
56 RETURN @results
57 END
58 EXEC @hr = sp_OASetProperty @objRegExp, 'IgnoreCase', @ignorecase
59 IF @hr <> 0 BEGIN
60 SET @results = 0
61 RETURN @results
62 END
63--调用对象方法
64 EXEC @hr = sp_OAMethod @objRegExp, 'Test', @results OUTPUT, @source
65 IF @hr <> 0 BEGIN
66 SET @results = 0
67 RETURN @results
68 END
69--释放已创建的 OLE 对象
70 EXEC @hr = sp_OADestroy @objRegExp
71 IF @hr <> 0 BEGIN
72 SET @results = 0
73 RETURN @results
74 END
75 RETURN @results
76 END
77