2023年11月30日发(作者:)

SQLServer中使⽤正则表达式

sqlserver对于字符串的处理⽐较弱,replace函数也仅仅⽀持⽤字符串来作为匹配项,要是需要使⽤正则表达式,就只能通过系统存储过

程来调⽤VB组件来实现了,下⾯是两个写好的正则函数:

测试是否匹配:

sMatch

(

@source (5000), --需要匹配的源字符串

@regexp (1000), --正则表达式

@ignorecase = 0 --是否区分⼤⼩写,默认为false

)

--返回结果-false-true

--0(成功)或⾮零数字(失败),是由OLE ⾃动化对象返回的HRESULT 的整数值。

@hr

--⽤于保存返回的对象令牌,以便之后对该对象进⾏操作

@objRegExp @objMatches

--保存结果

@results

/*

创建OLE 对象实例,只有sysadmin 固定服务器⾓⾊的成员才能执⾏sp_OACreate,并确定机器中有类库

*/

@hr = '', @objRegExp

@hr <> 0

@results = 0

@results

@hr = @objRegExp, 'Pattern', @regexp

@hr <> 0

@results = 0

@results

@hr = @objRegExp, 'Global',

@hr <> 0

@results = 0

@results

@hr = @objRegExp, 'IgnoreCase', @ignorecase

@hr <> 0

@results = 0

@results

正则替换:

--SQL正则替换函数

eplace

(

@source , --原字符串

@regexp (1000), --正则表达式

@replace (1000), --替换值

@globalReplace = 1, --是否是全局替换

@ignoreCase = 0 --是否忽略⼤⼩写

)

(1000)

@hr

@objRegExp

@result (5000)

@hr = '', @objRegExp

@hr <> 0

@hr = @objRegExp

@hr = @objRegExp, 'Pattern', @regexp

@hr <> 0

@hr = @objRegExp

'Ole Automation Procedures', 1

在设置此配置时有可能会提⽰配置选项'Ole Automation Procedures' 不存在,也可能是⾼级选项。的错误,解决办法是在配置之前执⾏语句:

'show advanced options',1