如何在SQL Server中使用正则表达式

 我来答
鲜美还清湛灬白桦N
2015-01-17 · TA获得超过621个赞
知道小有建树答主
回答量:404
采纳率:50%
帮助的人:533万
展开全部
Create Function [dbo].[IsMatch](@Reg Varchar(1000),@Source Varchar(4000))
returns sql_variant
As
Begin
Declare @Err Int
Declare @obj Int
Declare @Rst sql_variant

EXEC @Err=Sp_OACreate 'VBScript.RegExp',@obj OUTPUT
If @Err<>0 GoTo LB

EXEC @Err=Sp_OASetProperty @obj,'Pattern',@Reg
If @Err<>0 GoTo LB

EXEC @Err=Sp_OASetProperty @obj,'Global','True'
If @Err<>0 GoTo LB

EXEC @Err=Sp_OASetProperty @obj,'IgnoreCase','False'
If @Err<>0 GoTo LB

EXEC @Err=Sp_OAMethod @obj,'Test',@Rst OUTPUT,@source
If @Err<>0 GoTo LB

EXEC @Err=Sp_OADestroy @obj
If @Err<>0 GoTo LB

Return @Rst
LB:
EXEC Sp_OADestroy @obj
RETURN Null
End

--字符串匹配的
Select dbo.IsMatch('\d','12345')

Create Function [dbo].[MyReplace](@Reg Varchar(1000),@Source Varchar(4000),@Str Varchar(1000))
returns sql_variant
As
Begin
Declare @Err Int
Declare @obj Int
Declare @Rst sql_variant

EXEC @Err=Sp_OACreate 'VBScript.RegExp',@obj OUTPUT
If @Err<>0 GoTo LB

EXEC @Err=Sp_OASetProperty @obj,'Pattern',@Reg
If @Err<>0 GoTo LB

EXEC @Err=Sp_OASetProperty @obj,'Global','True'
If @Err<>0 GoTo LB

EXEC @Err=Sp_OASetProperty @obj,'IgnoreCase','False'
If @Err<>0 GoTo LB

EXEC @Err=Sp_OAMethod @obj,'Replace',@Rst OUTPUT,@source,@Str
If @Err<>0 GoTo LB

EXEC @Err=Sp_OADestroy @obj
If @Err<>0 GoTo LB

Return @Rst
LB:
EXEC Sp_OADestroy @obj
RETURN Null
End
--字符串替换的
select dbo.MyReplace('\d','123A454','')

--字符串提取的,这种方法不会搞
--这两个函数需要开启Ole Automation Procedures配置
/*
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ole Automation Procedures',1
reconfigure
exec sp_configure 'show advanced options',0
reconfigure
*/
--CLR的匹配,查找,截取,统计,分割和提取代码我也有,不知道你要不要
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雨诺与诺
2015-01-17 · TA获得超过1213个赞
知道小有建树答主
回答量:2179
采纳率:33%
帮助的人:694万
展开全部
直接使用。先学习正则表达式。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式