当前位置: 代码迷 >> SQL >> SQL Server中施行正则表达式
  详细解决方案

SQL Server中施行正则表达式

热度:18   发布时间:2016-05-05 12:56:51.0
SQL Server中执行正则表达式
-- =============================================-- 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

 

  相关解决方案