CREATE FUNCTION [dbo].[RegexMatch]
(
@pattern VARCHAR(2000),
@matchstring VARCHAR(8000)--Varchar(8000) got SQL Server 2000
)
RETURNS INT
/* The RegexMatch returns TrueorFalse, indicating if the regular expression matches (part of) the string. (It returns nullif there is an error).
Whenusing this for validating userinput, you'll normally want to check if the entire string matches the regular expression. To do so, put a caret at the start of the regex, and a dollar at the end, to anchor the regex at the start and end of the subject string.
*/
AS BEGIN
DECLARE @objRegexExp INT,
@objErrorObject INT,
@strErrorMessage VARCHAR(255),
@hr INT,
@match BIT
SELECT @strErrorMessage = 'creating a regex object'
EXEC @hr= sp_OACreate 'VBScript.RegExp', @objRegexExp OUT
IF @hr = 0
EXEC @hr= sp_OASetProperty @objRegexExp, 'Pattern', @pattern
--Specifying a case-insensitive match
IF @hr = 0
EXEC @hr= sp_OASetProperty @objRegexExp, 'IgnoreCase', 1
--Doing a Test'IF @hr = 0EXEC @hr= sp_OAMethod @objRegexExp, 'Test', @match OUT, @matchstring
IF @hr <> 0BEGIN
RETURN NULLENDEXEC sp_OADestroy @objRegexExp
RETURN @matchENDGO
自定义函数实现CREATE FUNCTION [dbo].[RegexMatch] ( @pattern VARCHAR(2000), @matchstring VARCHAR(8000)--Varchar(8000) got SQL Server 2000 )RETURNS INT/* The RegexMatch returns True or Fal