SQLSERVER中正規表示式封裝使用

weixin_33858249發表於2015-12-11
原文:SQLSERVER中正規表示式封裝使用

封裝好的正規表示式供SQLSERVER呼叫

開啟資料庫->可程式設計性->函式->標量值函式->新建標量值函式名

USE [資料庫]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER function [dbo].[標量值函式名]

(

@source ntext, --原字串

@regexp varchar(1000), --正規表示式

@replace varchar(1000), --替換值

@globalReplace bit = 1, --是否是全域性替換

@ignoreCase bit = 0 --是否忽略大小寫

)

returnS varchar(1000) AS

begin

declare @hr integer

declare @objRegExp integer

declare @result varchar(5000)

exec @hr = sp_OACreate 'VBScript.RegExp', @objRegExp OUTPUT

IF @hr <> 0 begin

exec @hr = sp_OADestroy @objRegExp

return null

end

exec @hr = sp_OASetProperty @objRegExp, 'Pattern', @regexp

IF @hr <> 0 begin

exec @hr = sp_OADestroy @objRegExp

return null

end

exec @hr = sp_OASetProperty @objRegExp, 'Global', @globalReplace

IF @hr <> 0 begin

exec @hr = sp_OADestroy @objRegExp

return null

end

exec @hr = sp_OASetProperty @objRegExp, 'IgnoreCase', @ignoreCase

IF @hr <> 0 begin

exec @hr = sp_OADestroy @objRegExp

return null

end

exec @hr = sp_OAMethod @objRegExp, 'Replace', @result OUTPUT, @source, @replace

IF @hr <> 0 begin

exec @hr = sp_OADestroy @objRegExp

return null

end

exec @hr = sp_OADestroy @objRegExp

IF @hr <> 0 begin

return null

end

return @result

end

 

相關文章