¡Hola, chicos!
¿Cómo estás? Eso espero, ¡eh!

En esta publicación, le demostraré cómo convertir una cadena HTML en texto (eliminar etiquetas HTML) usando CLR (C#). Si eres nuevo en el blog o nunca has oído hablar de CLR o no sabes cómo crear tu primer proyecto usando esta poderosa herramienta de SQL Server, que te permite crear códigos en C# o VB.NET y ejecutarlos a través de la base de datos, da una lista en el post. Introducción a SQL CLR (Common Language Runtime) en SQL Server.

En 2014 hice el post. Eliminar etiquetas HTML de una cadena en SQL Server y por lo tanto, te estarás preguntando: “Dirceu, si ya hiciste un post sobre esto, ¿para qué hacer otro similar usando el CLR?” y la respuesta es muy simple: ¡Código y RENDIMIENTO mucho más simples! Como ya expliqué en el post. SQL Server: comparación de rendimiento entre la función escalar y la función escalar CLR, las funciones CLR generalmente ofrecen un rendimiento MUCHO mejor que las funciones UDF T-SQL, siendo hasta 200 veces más rápidas.

Código utilizado para crear registros:

IF (OBJECT_ID('dirceuresende.dbo.Teste_HTML') IS NOT NULL) DROP TABLE dirceuresende.dbo.Teste_HTML
CREATE TABLE dirceuresende.dbo.Teste_HTML (
    texto VARCHAR(MAX)
)
GO

INSERT INTO dirceuresende.dbo.Teste_HTML
SELECT '<!DOCTYPE html>
<html>
<body>

<h1>My First Heading</h1>

<p>My first paragraph.</p>

</body>
</html>' AS texto
FROM sys.objects
GO 40

Para demostrar la diferencia en el rendimiento de las dos funciones, llené una tabla con solo 6000 registros, todos con la misma cadena que contiene código HTML básico. Y cuanto mayor sea el volumen de datos, mayor será la diferencia de rendimiento entre las funciones CLR y UDF T-SQL. Puedes ver el resultado a continuación:

Comparación de la función CLR con la función T-SQL: 173 veces más rápida

Código fuente de la función:

Para eliminar etiquetas HTML, utilizo el método HtmlDecode de la clase WebUtility, que pertenece a la biblioteca System.Net. Este método sólo está disponible a partir de .NET Framework 4.0 en adelante y por lo tanto, sólo es posible utilizarlo en SQL Server 2012 o superior (las versiones 2005 y 2008 de SQL Server utilizan .NET Framework 3.5)

El parámetro Fl_Quebra_Linha se utiliza para reemplazar la etiqueta
(y sus variantes) con un salto de línea en el texto. Si ingresa el valor 0 (falso) en este parámetro, los saltos de línea serán reemplazados por una cadena vacía.

using System;
using System.Net;
using System.Text.RegularExpressions;

public partial class UserDefinedFunctions
{
    [Microsoft.SqlServer.Server.SqlFunction]
    public static string fncRemove_Html_String(string Ds_String_HTML, bool Fl_Quebra_Linha)
    {

        if (string.IsNullOrEmpty(Ds_String_HTML))
            return null;


        var html = Ds_String_HTML;
        html = WebUtility.HtmlDecode(html);

        if (Fl_Quebra_Linha)
        {
            html = Regex.Replace(html, "<br/>", Environment.NewLine, RegexOptions.IgnoreCase);
            html = Regex.Replace(html, "<br />", Environment.NewLine, RegexOptions.IgnoreCase);
            html = Regex.Replace(html, "<br>", Environment.NewLine, RegexOptions.IgnoreCase);
        }

        html = Regex.Replace(html, " ", " ", RegexOptions.IgnoreCase);
        html = Regex.Replace(html, "<.*?>", string.Empty);

        return html;
    }
}

¡Eso es todo, amigos!
Espero que hayas disfrutado del post y hasta la próxima.

servidor SQL convertir convertir texto de cadena html eliminar eliminar etiquetas html a texto sin formato

servidor SQL convertir convertir texto de cadena html eliminar eliminar etiquetas html a texto sin formato