Função SQL para usarmos expressões regulares nas querys
CREATE FUNCTION evalRegEx
(
@source varchar(5000),
@regexp varchar(1000),
@ignorecase bit = 0
)
RETURNS bit
AS
BEGIN
DECLARE @hr integer
DECLARE @objRegExp integer
DECLARE @objMatches integer
DECLARE @objMatch integer
DECLARE @count integer
DECLARE @results bit
SET @results = 0
EXEC @hr = sp_OACreate 'VBScript.RegExp', @objRegExp OUTPUT
IF @hr = 0 BEGIN
EXEC @hr = sp_OASetProperty @objRegExp, 'Pattern', @regexp
IF @hr = 0 BEGIN
EXEC @hr = sp_OASetProperty @objRegExp, 'Global', false
IF @hr = 0 BEGIN
EXEC @hr = sp_OASetProperty @objRegExp, 'IgnoreCase', @ignorecase
IF @hr = 0 BEGIN
EXEC @hr = sp_OAMethod @objRegExp, 'Test', @results OUTPUT, @source
END
END
END
EXEC @hr = sp_OADestroy @objRegExp
END
RETURN @results
END
Usando:
SELECT dbo.evalRegEx('Teste de expressão regular', 'IS', 0)
Este select retornará 0
SELECT dbo.evalRegEx('Teste de expressão regular', 'IS', 1)
Este select retornará 1
Pode ocorrer problemas com permissão de usuário, para corrigir o login SQL deve ter acesso EXECUTE ao DB MASTER.
abs