SQL - Supprimer toutes les balises HTML dans une chaîne de caractères

Dans mon dataset, j'ai un champ qui stocke le texte marqué avec HTML. Le grand format est comme suit:

<html><head></head><body><p>My text.</p></body></html>

Je pourrais tenter de résoudre le problème en procédant comme suit:

REPLACE(REPLACE(Table.HtmlData, '<html><head></head><body><p>', ''), '</p></body></html>')

Cependant, ce n'est pas une règle stricte que certaines des entrées de briser les Normes W3C et ne comprennent pas <head> tags par exemple. Pire encore, il pourrait être absent des balises de fermeture. Donc j'aurais besoin d'inclure le REPLACE fonction pour chaque ouverture et la balise de fermeture qui puisse exister.

REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
    Table.HtmlData,
    '<html>', ''),
    '</html>', ''),
    '<head>', ''),
    '</head>', ''),
    '<body>', ''),
    '</body>', ''),
    '<p>', ''),
    '</p>', '')

Je me demandais si il y avait un meilleur moyen d'atteindre ce que l'utilisation de plusieurs imbriquée REPLACE fonctions. Malheureusement, les seules langues que j'ai à disposition dans cet environnement SQL et Visual Basic (pas .NET).

Comme vous pouvez le voir par vous-même, à la base SQL Server fonctions de chaîne sont maladroits, au mieux, laid, au pire, pour le genre de problème auquel vous êtes confronté. Vous avez un temps beaucoup plus facile de l'OMI faire cela en utilisant quelque chose comme Java ou .NET, où vous pourriez tirer parti de la puissance d'un analyseur XML. Est-il possible d'utiliser un autre outil pour résoudre ce problème?
Imbriquée REPLACE est presque le même comme une boucle (de performance). Je voudrais créer un 2-dimensions de la matrice de la tenue des paires de balises HTML et en boucle sur la chaîne d'essayer de remplacer les balises. L'avantage est que vous pouvez modifier (enrichir) le tableau sans modification de votre code.
Je suis totalement d'accord avec Tim. Aussi, ce qui va vous arriver si vous avez ramenks, javascript ou un bloc de style à l'intérieur de votre code html? vous allez voir comme une partie du contenu, je doute que c'est ce que vous voulez...
J'aimerais la mettre en œuvre, mais ce qui se passe dans un rapport SSRS donc, la meilleure option que j'ai serait Visual Basic... Frissonner. Il y a au moins, une garantie qu'il n'y aura pas de JavaScript ou CSS.
Selon la plate-forme que vous sélectionnez (SQL, JAVA ,VBA , FORTRAN...) de paradigme que j'ai présenté ci-dessus feraient le travail de garder de la souplesse.

OriginalL'auteur dkmann | 2016-08-10