Eliminar etiquetas HTML en SQL

Alfredo
Sígueme!

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 etiquetas 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 <>.

Función decodificarHTML

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


-- Funcion que se encarga de decodificar textos en HTML
ALTER FUNCTION [dbo].[decodificarHTML](@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.decodificarHTML('<strong>Prueba de escritura</strong> en el sofá');

Y nos devuelve…

Prueba de escritura en el sofá

Alfredo

Desarrollador web de profesión (.NET, jQuery, JavaScript y SQL Server). Amante del fútbol y los videojuegos. Escribo en este blog sobre temas de programación que me parecen interesantes y que quiero compartir con todo el mundo.

También te podría gustar...

2 Respuestas

  1. fraciel dice:

    Muy practico y esencial

Deja una respuesta

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

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies
A %d blogueros les gusta esto: