2023年11月30日发(作者:)
数据库中使⽤正则表达式
数据库中使⽤正则表达式
代码
CREATE FUNCTION Test (
@source varchar(5000), --需要匹配的源字符串
@regexp varchar(1000), --正则表达式
@ignorecase bit = 0 --是否区分⼤⼩写,默认为false
)
RETURNS bit --返回结果-false,-true
AS
BEGIN
--0(成功)或⾮零数字(失败),是由OLE ⾃动化对象返回的HRESULT 的整数值。
DECLARE @hr integer
--⽤于保存返回的对象令牌,以便之后对该对象进⾏操作
DECLARE @objRegExp integer DECLARE @objMatches integer
--保存结果
DECLARE @results bit
/*
创建OLE 对象实例,只有sysadmin 固定服务器⾓⾊的成员才能执⾏sp_OACreate,并确定机器中有类库
*/
EXEC @hr = sp_OACreate '', @objRegExp OUTPUT
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
/*
以下三个分别是设置新建对象的三个属性。下⾯是''中常⽤的属性举例:
Dim regEx,Match,Matches '建⽴变量。
Set regEx = New RegExp '建⽴⼀般表达式。
n= patrn '设置模式。
Case = True '设置是否区分⼤⼩写。
=True '设置全局可⽤性。
set Matches=e(string) '重复匹配集合
RegExpTest = e(strng) '执⾏搜索。
for each match in matches '重复匹配集合
RetStr=RetStr &"Match found at position "
RetStr=RetStr&ndex&".Match Value is '"
RetStr=RetStr&&"'."&vbCRLF Next
RegExpTest=RetStr
*/
EXEC @hr = sp_OASetProperty @objRegExp, 'Pattern', @regexp
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
EXEC @hr = sp_OASetProperty @objRegExp, 'Global', false
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
EXEC @hr = sp_OASetProperty @objRegExp, 'IgnoreCase', @ignorecase
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
--调⽤对象⽅法
EXEC @hr = sp_OAMethod @objRegExp, 'Test', @results OUTPUT, @source
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
--释放已创建的OLE 对象
EXEC @hr = sp_OADestroy @objRegExp
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
RETURN @results
END
--打开⾼级选项
sp_configure 'show advanced options',1
reconfigure
--设置选项打开
sp_configure 'Ole Automation Procedures',1
reconfigure


发布评论