標籤:des blog http 使用 io ar 資料 2014 cti
一、查看配置,如果‘show advanced options’,‘Ole Automation Procedures’,‘Ad Hoc Distributed Queries’的config_value和run_value不為1,需要執行二中指令碼。
二、執行指令碼,開啟SQL Server 對組件的訪問阻止。
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
三、建立函數(除資料庫名和函數名外其他保持不變即可)
Use EDRMSOfficeDB;--(資料庫名)
GO
if object_id(N‘dbo.Reg‘) is not null --(函數名)
drop function dbo.Reg;
GO
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
四、測試
查詢欄位中含有出字母和數字之外的記錄:
SELECT CategoryId FROM Category WHERE dbo.Reg(‘^[A-Za-z0-9]+$‘,CategoryId )=0
SqlServer中使用Regex