if exists (select * from dbo.sysobjects where id = object_id(n'[dbo].[getvaluebyregep]') and xtype in (n'fn', n'if', n'tf'))
drop function [dbo].[getvaluebyregep]
goset quoted_identifier on
goset ansi_nulls on
gocreate function dbo.getvaluebyregep
(@source varchar(5000), --需要匹配的源字串
@regexp varchar(1000), --正規表示式
@ignorecase bit = 0 --是否區分大小寫,預設為false
)returns bit --返回結果0-false,1-true
asbegin
--0(成功)或非零數字(失敗),是由 ole 自動化物件返回的 hresult 的整數值。
declare @hr integer
--用於儲存返回的物件令牌,以便之後對該物件進行操作
declare @objregexp integer declare @objmatches integer
--儲存結果
declare @results bit
/*建立 ole 物件例項,只有 sysadmin 固定伺服器角色的成員才能執行 sp_oacreate,並確定機器中有vbscript.regexp類庫
*/exec @hr = sp_oacreate 'vbscript.regexp', @objregexp output
if @hr <> 0 begin
set @results = 0
return @results
end/*
以下三個分別是設定新建物件的三個屬性。下面是'vbscript.regexp'中常用的屬性舉例:
dim regex,match,matches '建立變數。
set regex = new regexp '建立一般表示式。
regex.pattern= patrn '設定模式。
regex.ignorecase = true '設定是否區分大小寫。
regex.global=true '設定全域性可用性。
set matches=regex.execute(string) '重複匹配集合
regexptest = regex.execute(strng) '執行搜尋。
for each match in matches '重複匹配集合
retstr=retstr &"match found at position "
retstr=retstr&match.firstindex&".match value is '"
retstr=retstr&match.value&"'."&vbcrlf next
regexptest=retstr
*/exec @hr = sp_oasetproperty @objregexp, 'pattern', @regexp
if @hr <> 0 begin
set @results = 0
return @results
endexec @hr = sp_oasetproperty @objregexp, 'global', false
if @hr <> 0 begin
set @results = 0
return @results
endexec @hr = sp_oasetproperty @objregexp, 'ignorecase', @ignorecase
if @hr <> 0 begin
set @results = 0
return @results
end
--呼叫物件方法
exec @hr = sp_oamethod @objregexp, 'test', @results output, @source
if @hr <> 0 begin
set @results = 0
return @results
end--釋放已建立的 ole 物件
exec @hr = sp_oadestroy @objregexp
if @hr <> 0 begin
set @results = 0
return @results
endreturn @results
endgo
set quoted_identifier off
goset ansi_nulls on
go
sql正規表示式 SQL中的正規表示式
sql正規表示式 sql中的正規表示式 sql的查詢語句中,有時會需要引進正規表示式為其複雜搜尋指定模式。下面給出一些 regexp 在mysql 語句中應用 非全部 1 匹配字串的開始部分。mysql select fo nfo regexp fo 0mysql select fofo regex...
SQL 正規表示式
由mysql提供的模式匹配的其他型別是使用擴充套件正規表示式。當你對這類模式進行匹配測試時,使用regexp和not regexp操作符 或rlike和not rlike,它們是同義詞 擴充套件正規表示式的一些字元是 匹配任何單個的字元。乙個字元類 匹配在方括號內的任何字元。例如,abc 匹配 a ...
SQL正規表示式
當我們要進行一些簡單的糊塗查詢時用百分號 萬用字元 就可以了.其中 表達任意長度的字串,表示任意的某乙個字元.比如select from emp where ename like s or ename like s 但如果在一些複雜的查詢中關用這兩個符號sql語句就會非常複雜,而且也不一定能實現.從...