WEB开发网
开发学院数据库MSSQL Server SQL Server中执行正则表达式 阅读

SQL Server中执行正则表达式

 2012-11-06 16:38:11 来源:WEB开发网   
核心提示: CREATE FUNCTION Reg ( @pattern varchar(2000), @matchstring varchar(8000) ) returns int as begin declare @objRegexExp int declare @st

 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

Tags:SQL Server 执行

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接