CREATE FUNCTION dbo.RegExpTest ( @source varchar(), --需要匹配的源字符串 @regexp varchar(), --正则表达式 @ignorecase bit = --是否区分大小写,默认为false ) RETURNS bit --返回结果-false,-true AS BEGIN --(成功)或非零数字(失败),是由OLE 自动化对象返回的HRESULT 的整数值。 DECLARE @hr integer --用于保存返回的对象令牌,以便之后对该对象进行操作 DECLARE @objRegExp integer DECLARE @objMatches integer --保存结果 DECLARE @results bit /* 创建OLE 对象实例,只有sysadmin 固定服务器角色的成员才能执行sp_OACreate,并确定机器中有VBScript.RegExp类库 */ EXEC @hr = sp_OACreate "VBScript.RegExp", @objRegExp OUTPUT IF @hr <> BEGIN SET @results = RETURN @results END /*以下三个分别是设置新建对象的三个属性。下面是"VBScript.RegExp"中常用的属性举例:
Dim regEx,Match,Matches "建立变量。 Set regEx = New RegExp "建立一般表达式。 regEx.Pattern= patrn "设置模式。 regEx.IgnoreCase = True "设置是否区分大小写。 regEx.Global=True "设置全局可用性。 set Matches=regEx.Execute(string) "重复匹配集合 RegExpTest = regEx.Execute(strng) "执行搜索。 for each match in matches "重复匹配集合 RetStr=RetStr &"Match found at position " RetStr=RetStr&Match.FirstIndex&".Match Value is "" RetStr=RetStr&Match.Value&""."&vbCRLF Next RegExpTest=RetStr */ EXEC @hr = sp_OASetProperty @objRegExp, "Pattern", @regexp IF @hr <> BEGIN SET @results = RETURN @results END EXEC @hr = sp_OASetProperty @objRegExp, "Global", false IF @hr <> BEGIN SET @results = RETURN @results END EXEC @hr = sp_OASetProperty @objRegExp, "IgnoreCase", @ignorecase IF @hr <> BEGIN SET @results = RETURN @results END --调用对象方法 EXEC @hr = sp_OAMethod @objRegExp, "Test", @results OUTPUT, @source IF @hr <> BEGIN SET @results = RETURN @results END --释放已创建的OLE 对象 EXEC @hr = sp_OADestroy @objRegExp IF @hr <> BEGIN SET @results = RETURN @results END RETURN @results END --打开高级选项sp_configure "show advanced options",reconfigure--设置选项打开sp_configure "Ole Automation Procedures",reconfigure示例二:
查询myname中以g结尾的数据:
查询包含w的数据:
包含六个字符的数据:
可以使用“{n}”“重复n次”操作符:
以上内容是脚本之家小编给大家通过两段示例给大家分享的数据库中使用正则表达式小结,希望对大家有所帮助。