SQL Server中执行正则表达式

来源:互联网 发布:网络暴力的ppt 编辑:程序博客网 时间:2024/06/06 06:43
-- =============================================-- Author:<liudong>-- Create date: <2012/11/06>-- Description:<sql正则表达式>-- =============================================CREATE FUNCTION Reg (      @pattern varchar(2000),      @matchstring varchar(8000)  )  returns int  as   begin      declare @objRegexExp int      declare @strErrorMessage varchar(255)      declare @hr int,@match bit      exec @hr= sp_OACreate 'VBScript.RegExp', @objRegexExp out      if @hr = 0           exec @hr= sp_OASetProperty @objRegexExp, 'Pattern', @pattern      if @hr = 0           exec @hr= sp_OASetProperty @objRegexExp, 'IgnoreCase', 1      if @hr = 0           exec @hr= sp_OAMethod @objRegexExp, 'Test', @match OUT, @matchstring      if @hr <>0       begin          return null      end      exec sp_OADestroy @objRegexExp      return @match  end

 

函数结果返回 1 ,验证成功。

 

如果执行上面的函数报如下错误:

SQL Server 阻止了对组件 'Ole Automation Procedures' 的 过程'sys.sp_OACreate' 的访问

执行下面sql语句即可:

USE master  GO  sp_configure 'show advanced options', 1;  GO  RECONFIGURE;  GO  sp_configure 'Ole Automation Procedures', 1;  GO  RECONFIGURE;  GO  sp_configure 'Ad Hoc Distributed Queries', 1;  GO  RECONFIGURE;  GO    --查询配置信息    RECONFIGURE;  EXEC sp_configure;


测试语句(假如要查找Users表所有用户名为存英文的用户内):

SELECT * FROM Users WHERE dbo.Reg('^[a-zA-Z]+$',UserName)=1

 

原创粉丝点击