Fala galera!
Tudo bem com vocês? Espero que sim, hein!
Neste post, vou demonstrar pra vocês como converter uma string HTML para texto (Remover tags HTML) utilizando o CLR (C#). Se você é novo aqui no blog ou nunca ouviu falar de CLR ou não sabe como criar seu primeiro projeto utilizando esta poderosa ferramenta do SQL Server, que permite criar códigos em C# ou VB.NET e executá-los pelo banco de dados, dê uma lista no post Introdução ao SQL CLR (Common Language Runtime) no SQL Server.
Em 2014, eu fiz o post Removendo tags HTML de uma string no SQL Server e por isso, você deve estar se perguntando: “Dirceu, se você já fez um post sobre isso, porquê fazer outro igual utilizando o CLR?” e a resposta para isso é muito simples: Código muito mais simples e PERFORMANCE! Como já expliquei no post SQL Server – Comparação de performance entre Scalar Function e CLR Scalar Function, funções CLR geralmente entregam uma performance MUITO superior a funções UDF T-SQL, chegando a ser até 200 vezes mais rápido.
Código-utilizado para a criação dos 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 demonstrar a diferença de performance das duas funções, populei uma tabela com apenas 6.000 registros, todos com a mesma string contendo um código HTML básico. E quanto maior o volume de dados, maior será a diferença de performance entre as funções CLR e UDF T-SQL. O resultado vocês podem conferir abaixo:
Código-fonte da função:
Para remover as tags HTML, utilizo o método HtmlDecode da classe WebUtility, que pertence à biblioteca System.Net. Esse método está disponível apenas a partir do .NET Framework 4.0 e por isso, só é possível utilizá-lo no SQL Server 2012 ou superiores (as versões 2005 e 2008 do SQL Server utilizam o .NET Framework 3.5)
O parâmetro Fl_Quebra_Linha serve para substituir a tag <br> (e suas variantes) por uma quebra de linha no texto. Caso você informe o valor 0 (false) nesse parâmetro, as quebras de linha serão substituídas por uma string vazia.
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;
}
}
É isso aí, pessoal!
Espero que tenham gostado do post e até o próximo.
sql server converter convert string text html remover remove tags html para texto plain text
sql server converter convert string text html remover remove tags html para texto plain text

Comentários (0)
Carregando comentários…