在SQL使用正規表示式

2021-09-08 06:33:48 字數 2464 閱讀 2730

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語句就會非常複雜,而且也不一定能實現.從...