Expresiones regulares y consultas de agrupación en sqlserver
Función Vbscript (requiere la biblioteca vbscript en el entorno de ejecución SqlServer)
Crear función [dbo]. [RegexMatchFirst]
(
@ texto fuente, -cadena original
@ regexpvarchar (1000), -expresión regular
@ globalbit = 1, - ¿es un reemplazo global?
@ ignorar caso bit = 0 - ¿se ignora caso
)
Devuelve varchar(1000) para p>
inicio
declarar @hr entero
declarar @objRegExp entero
declarar @objMatch INT
declarar @matchcount INT
Declarar @command varchar(50)
declarar @result varchar(5000)
exec @hr = sp_OACreate 'VBScript.
RegExp ', salida @objRegExp
IF @ hr & lt& gt0 start
exec @hr = sp_OADestroy @objRegExp
Devolver nulo
end
exec @HR = sp_oaset propiedad @objRegExp, 'Pattern', @regexp
IF @hr & lt& gt0 start
exec @hr = sp_OADestroy @ objRegExp
Retorno nulo
Fin
exec @HR = propiedad sp_oaset @objRegExp, 'Global', @global
IF @ hr & lt& gt0 start
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @ HR = propiedad sp_oaset @objRegExp , 'IgnoreCase', @ignoreCase
IF @hr & lt& gt0 start
exec @hr = sp_OADestroy @objRegExp
return null
END
exec @hr = sp_OAMethod @objRegExp, 'ejecutar', @objmatch SALIDA, @source
IF @hr & lt& gt0 INICIO
exec @ hr = sp_OADestroy @objRegExp
Devolver nulo
Fin
EXEC @HR = sp_OAGetProperty@obj coincidencia, 'cuenta', @matchcount OUT
IF @hr & lt& gt0 o @objmatch = 0 start
exec @hr = sp_OADestroy @objRegExp
Devolver nulo
Fin
set @command = 'elemento(0). "valor"
EXEC @HR = sp_OAGetProperty @obj match, @command, @result OUT
exec @hr = sp_OADestroy @objRegExp
IF @ hr & lt& gt0Inicio
Devolver nulo
Fin
Devolver @result
Fin
Ensamblaje del tiempo de ejecución del marco: p>
Abra Microsoft Visual Studio, cree un proyecto de base de datos SQLServer, cree una función de coincidencia de expresiones regulares en el proyecto de acuerdo con el patrón SqlServer y luego compílelo e impleméntelo en su base de datos SqlServer.
En este punto, al actualizar la Programabilidad de la base de datos -> Funciones -> Funciones de valor escalar, verá la función personalizada que creó en Microsoft Visual Studio.