Expressão regular no SQL Server

segunda-feira, 11 maio 2009 17:30 por leolima77

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

 

Tags:   ,
Categorias:   Dicas
Ferramentas:   E-mail | del.icio.us | digg | rec6 | linkk | Permalink