Eliminar HTML en SQL

Facebook
Twitter
LinkedIn
WhatsApp

Estamos haciendo una consulta a una tabla, y vemos que la tabla tiene un texto. Pero vemos que el propio texto contiene etiquetas HTML que nos molestan o no deberían estar ahí (se aplicarían formatos de cualquier editor de textos WYSIWYG) y cuando vamos a extraer la información nos molesta.

Pero tenemos prisa y tendríamos que modificar o crear un programa y no tenemos tiempo. ¿Qué hacemos? Pues tengo la función que estás buscando, su funcionamiento es pasar un texto por parámetro y eliminar HTML en SQL.

Nota: Este procedimiento sirve para SQL Server.

Características de la función

  • Sustituye cualquier carácter especial ASCII por el carácter visible que corresponde. ( ‘ù’ ‘ù’ )
  • Eliminar etiquetas HTML, cualquier etiqueta que lleve los signos <>.

Te dejo una tabla de caracteres ASCII sencilla en la que entenderás después algunos conceptos 😉

eliminar HTML
Tabla sencilla ASCII

Función eliminar HTML

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


-- Funcion que se encarga de decodificar textos en HTML
ALTER FUNCTION [dbo].[eliminarHTML](@HTMLText varchar(MAX))
RETURNS varchar(MAX)
AS
BEGIN
    DECLARE @Start  int
    DECLARE @End    int
    DECLARE @Length int

    -- Sustituye cualquier carácter especial ASCII por el carácter visible que corresponde.

    SET @HTMLText = REPLACE(@HTMLText, '<br>', CHAR(13) + CHAR(10))
    SET @HTMLText = REPLACE(@HTMLText, '<br/>', CHAR(13) + CHAR(10))
    SET @HTMLText = REPLACE(@HTMLText, '&amp;amp;', '&')
    SET @HTMLText = REPLACE(@HTMLText, '&amp;', '&')
    SET @HTMLText = REPLACE(@HTMLText, '&lt;', '<')
    SET @HTMLText = REPLACE(@HTMLText, '&gt;', '>')
    SET @HTMLText = REPLACE(@HTMLText, '&nbsp;', ' ') 
    SET @HTMLText = REPLACE(@HTMLText, '&euro;', '€')
    SET @HTMLText = REPLACE(@HTMLText, '&ordf;', 'ª')
    SET @HTMLText = REPLACE(@HTMLText, '&ordm;', 'º')
    SET @HTMLText = REPLACE(@HTMLText, '&aacute;', 'á')
    SET @HTMLText = REPLACE(@HTMLText, '&#225;', 'á')
    SET @HTMLText = REPLACE(@HTMLText, '&eacute;', 'é')
    SET @HTMLText = REPLACE(@HTMLText, '&#233;', 'é')
    SET @HTMLText = REPLACE(@HTMLText, '&iacute;', 'í')
    SET @HTMLText = REPLACE(@HTMLText, '&#237;', 'í')
    SET @HTMLText = REPLACE(@HTMLText, '&oacute;', 'ó')
    SET @HTMLText = REPLACE(@HTMLText, '&#243;', 'ó')
    SET @HTMLText = REPLACE(@HTMLText, '&uacute;', 'ú')
    SET @HTMLText = REPLACE(@HTMLText, '&#250;', 'ú')
    SET @HTMLText = REPLACE(@HTMLText, '&agrave;', 'à')
    SET @HTMLText = REPLACE(@HTMLText, '&#224;', 'à')
    SET @HTMLText = REPLACE(@HTMLText, '&egrave;', 'è')
    SET @HTMLText = REPLACE(@HTMLText, '&#232;', 'è')
    SET @HTMLText = REPLACE(@HTMLText, '&igrave;', 'ì')
    SET @HTMLText = REPLACE(@HTMLText, '&#236;', 'ì')
    SET @HTMLText = REPLACE(@HTMLText, '&ograve;', 'ò')
    SET @HTMLText = REPLACE(@HTMLText, '&#242;', 'ò')
    SET @HTMLText = REPLACE(@HTMLText, '&ugrave;', 'ù')
    SET @HTMLText = REPLACE(@HTMLText, '&#249;', 'ù')
    SET @HTMLText = REPLACE(@HTMLText, '&Aacute;', 'Á')
    SET @HTMLText = REPLACE(@HTMLText, '&#193;', 'Á')
    SET @HTMLText = REPLACE(@HTMLText, '&Eacute;', 'É')
    SET @HTMLText = REPLACE(@HTMLText, '&#201;', 'É')
    SET @HTMLText = REPLACE(@HTMLText, '&Iacute;', 'Í')
    SET @HTMLText = REPLACE(@HTMLText, '&#205;', 'Í')
    SET @HTMLText = REPLACE(@HTMLText, '&Oacute;', 'Ó')
    SET @HTMLText = REPLACE(@HTMLText, '&#211;', 'Ó')
    SET @HTMLText = REPLACE(@HTMLText, '&Uacute;', 'Ú')
    SET @HTMLText = REPLACE(@HTMLText, '&#218;', 'Ú')
    SET @HTMLText = REPLACE(@HTMLText, '&Agrave;', 'À')
    SET @HTMLText = REPLACE(@HTMLText, '&#192;', 'À')
    SET @HTMLText = REPLACE(@HTMLText, '&Egrave;', 'È')
    SET @HTMLText = REPLACE(@HTMLText, '&#200;', 'È')
    SET @HTMLText = REPLACE(@HTMLText, '&Igrave;', 'Ì')
    SET @HTMLText = REPLACE(@HTMLText, '&#204;', 'Ì')
    SET @HTMLText = REPLACE(@HTMLText, '&Ograve;', 'Ò')
    SET @HTMLText = REPLACE(@HTMLText, '&#210;', 'Ò')
    SET @HTMLText = REPLACE(@HTMLText, '&Ugrave;', 'Ù')
    SET @HTMLText = REPLACE(@HTMLText, '&#217;', 'Ù')
    SET @HTMLText = REPLACE(@HTMLText, '&#199;', 'Ç')
    SET @HTMLText = REPLACE(@HTMLText, '&#231;', 'ç')
    SET @HTMLText = REPLACE(@HTMLText, '&#209;', 'Ñ')
    SET @HTMLText = REPLACE(@HTMLText, '&#241;', 'ñ')
    SET @HTMLText = REPLACE(@HTMLText, '&#221;', 'Ý')
    SET @HTMLText = REPLACE(@HTMLText, '&#253;', 'ý')
    SET @HTMLText = REPLACE(@HTMLText, '&#iquest;', '¿')
    SET @HTMLText = REPLACE(@HTMLText, '&#191;', '¿')

    -- Elimina cualquier cosa entre las etiquetas <>.
    SET @Start = CHARINDEX('<', @HTMLText)
    SET @End = CHARINDEX('>', @HTMLText, CHARINDEX('<', @HTMLText))
    SET @Length = (@End - @Start) + 1
    WHILE (@Start > 0 AND @End > 0 AND @Length > 0) BEGIN
        SET @HTMLText = STUFF(@HTMLText, @Start, @Length, '')
        SET @Start = CHARINDEX('<', @HTMLText)
        SET @End = CHARINDEX('>', @HTMLText, CHARINDEX('<', @HTMLText))
        SET @Length = (@End - @Start) + 1
    END

    RETURN LTRIM(RTRIM(@HTMLText))
END

Importante: Recuerda que para crear primero la función hay que sustituir ALTER FUNCTION por CREATE FUNCTION, ejecutamos la función y volvemos a dejarlo como ALTER FUNCTION.

Probamos la función

select dbo.eliminarHTML('<strong>Prueba de escritura</strong> en el sofá');

Y nos devuelve…

Prueba de escritura en el sofá

Si te ha gustado esta utilidad de SQL, te recomiendo que visites toda nuestra categoria de SQL . Tenemos más utilidades como estas 😉

Facebook
Twitter
LinkedIn

2 comentarios en “Eliminar HTML en SQL”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio