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


发布评论