一、檢視配置,如果『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;--(資料庫名)
goif object_id(n'dbo.reg') is not null --(函式名)
drop function dbo.reg;
gocreate 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
SQL Server 2000 中使用正規表示式
這兩天有個需求,需要在資料庫中判斷字串的格式,於是從網上蒐集了一些資料,整理了一下。下面這個是乙個自定義函式,使用者可以呼叫這個函式判斷指定的字串是否符合正規表示式的規則.create function dbo.find regular expression source varchar 5000 ...
SQL Server 2000 中使用正規表示式
這兩天有個需求,需要在資料庫中判斷字串的格式,於是從網上蒐集了一些資料,整理了一下。下面這個是乙個自定義函式,使用者可以呼叫這個函式判斷指定的字串是否符合正規表示式的規則.createfunctiondbo.find regular expression sourcevarchar 5000 需要匹...
在SQLServer中使用正規表示式
sqlserver對於字串的處理比較弱,replace函式也僅僅支援用字串來作為匹配項,要是需要使用正規表示式,就只能通過系統儲存過程來呼叫vb元件來實現了,下面是兩個寫好的正則函式 測試是否匹配 gocreate function dbo.regexismatch source varchar 5...