如何让sqlserver脚本支持正则表达式呢?

mssql sqlserver 如何让sql脚本支持正则表达式呢?
http://www.maomao365.com/?p=11499
摘要:
下文讲述让sqlserver支持正则表达式的方法分享,如下所示:
实验环境:sql server 2008 R2


实现思路:
1.使用sp_OACreate 创建VBScript
2.使用sp_OASetPrperty 创建Pattern属性

例:
创建自定义函数,使sqlserver支持正则表达式

   create function dbo.zhengZeReplace
  (
   @source varchar(5000), --原字符串
   @regexp varchar(1000), --正则表达式
   @replace varchar(1000), --替换值
   @globalReplace bit = 0, --是否是全局替换
   @ignoreCase bit = 0 --是否忽略大小写
  )
returnS varchar(1000) AS
begin
declare @hr integer
declare @objRegExp integer
declare @result varchar(5000)

exec @hr = sp_OACreate 'VBScript.RegExp', @objRegExp OUTPUT
IF @hr <> 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @hr = sp_OASetProperty @objRegExp, 'Pattern', @regexp
IF @hr <> 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @hr = sp_OASetProperty @objRegExp, 'Global', @globalReplace
IF @hr <> 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @hr = sp_OASetProperty @objRegExp, 'IgnoreCase', @ignoreCase
IF @hr <> 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end 
exec @hr = sp_OAMethod @objRegExp, 'Replace', @result OUTPUT, @source, @replace
IF @hr <> 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @hr = sp_OADestroy @objRegExp
IF @hr <> 0 begin
return null
end

return @result
end
GO

---正则表达式测试 过滤出英文字母
declare @str varchar(100)
set @str='maomao365.com'
select dbo.zhengZeReplace(@str,'[^a-zA-Z]','',1,1)
相关阅读:
mssql sqlserver阻止了对组件 ‘Ole Automation Procedures’ 的 过程’sys.sp_OACreate’ 的访问–处理方法分享

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值