Het omzetten van HTML naar tekst in SQL efficiënt kan worden gedaan met een door de gebruiker gedefinieerde functie . Een door de gebruiker gedefinieerde functie accepteert parameters , voert een actie , zoals het ontleden van HTML , en geeft het resultaat als een waarde . De functie kan worden uitgevoerd vanaf elke SQL-instructie of externe programmeertaal . Wat je nodig hebt Intermediate kennis van T - SQL Voldoende machtigingen voor een functie databaseobject creëren Toon Meer Aanwijzingen 1 verbinding met uw database , en . maak een nieuwe SQL -bestand kopen van 2 Voer de volgende SQL : CREATE FUNCTION [ dbo ] [ CleanHTML ] ( @ . DirtyText varchar ( MAX ) op ) RETURNS varchar ( MAX ) op AS BEGIN DECLARE @ BeginPos int DECLARE @ EndPos int DECLARE @ Len int - Vervang de HTML- entiteit en met de ' & ' teken ( dit moet eerst worden gedaan , als - ' & ' zou worden dubbel gecodeerd als ' & ' ) SET @ BeginPos = CHARINDEX ( ' & ' , @ DirtyText ) SET @ EndPos = @ BeginPos + 4 < br SET > @ Len = ( @ EndPos - @ BeginPos ) + 1 TERWIJL ( @ BeginPos > 0 AND @ EndPos > 0 AND @ Len > 0 ) BEGIN SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Lengte , ' & ' ) SET @ BeginPos = CHARINDEX ( ' & ' , @ DirtyText ) SET @ EndPos = @ BeginPos + 4 SET @ Len = ( @ EndPos - @ BeginPos ) + 1 END - Vervang de HTML- entiteit < met de ' < ' teken < br SET > @ BeginPos = CHARINDEX ( ' < ' , @ DirtyText ) SET @ EndPos = @ BeginPos + 3 SET @ Len = ( @ EndPos - @ BeginPos ) + 1 TERWIJL ( @ BeginPos > 0 AND @ EndPos > 0 AND @ Len > 0 ) BEGIN SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Lengte , ' < ; ' ) SET @ BeginPos = CHARINDEX ( ' < ' , @ DirtyText ) SET @ EndPos = @ BeginPos + 3 SET @ Len = ( @ EndPos - @ BeginPos ) + 1 END - Vervang de HTML- entiteit > met de ' > ' karakter SET @ BeginPos = CHARINDEX ( ' > ' , @ DirtyText ) SET @ EndPos = @ BeginPos + SET 3 @ Len = ( @ EndPos - @ BeginPos ) + 1 TERWIJL ( @ BeginPos > 0 EN @ EndPos > 0 AND @ Len > 0 ) BEGIN SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Lengte , ' > ' ) SET @ BeginPos = CHARINDEX ( ' > ' , @ DirtyText ) SET @ EndPos = @ BeginPos + 3 SET @ Len = ( @ EndPos - @ BeginPos ) + 1 END < br > - Vervang de HTML- entiteit en met de ' & ' teken SET @ BeginPos = CHARINDEX ( ' & ' , @ DirtyText ) SET @ EndPos = @ BeginPos + 4 SET @ Len = ( @ EndPos - @ BeginPos ) + 1 TERWIJL ( @ BeginPos > 0 AND @ EndPos > 0 AND @ Len > 0 ) BEGIN SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Lengte , ' & ' ) SET @ BeginPos = CHARINDEX ( ' & ' , @ DirtyText ) SET @ EndPos = @ BeginPos + SET 4 @ Len = ( @ EndPos - @ BeginPos ) + 1 END - Vervang de HTML- entiteit met het karakter ' < br SET > @ BeginPos = CHARINDEX ( ' ' , @ DirtyText ) SET @ EndPos = @ BeginPos + 5 SET @ Len = ( @ EndPos - @ BeginPos ) + 1 TERWIJL ( @ BeginPos > 0 AND @ EndPos > 0 AND @ Len > 0 ) BEGIN SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Lengte , ' ' ) SET @ BeginPos = CHARINDEX ( ' ' , @ DirtyText ) SET @ EndPos = @ BeginPos + 5 SET @ Len = ( @ EndPos - @ BeginPos + 1 END ) - Vervang alle tags met een nieuwe regel SET @ BeginPos = CHARINDEX ( '' , @ DirtyText ) op SET @ EndPos = @ BeginPos + SET 3 @ Len = ( @ EndPos - @ BeginPos ) + 1 TERWIJL ( @ BeginPos > 0 AND @ EndPos > 0 AND @ Len > 0 ) BEGIN SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Lengte , CHAR ( 13 ) + CHAR ( 10 ) ) SET @ BeginPos = CHARINDEX ( '' , @ DirtyText ) SET @ EndPos = @ BeginPos + SET 3 @ Len = ( @ EndPos - @ BeginPos ) + 1 END - Vervang alle labels met een nieuwe regel SET @ BeginPos = CHARINDEX ( ' ' , @ DirtyText ) SET @ EndPos = @ BeginPos + 4 SET @ Len = ( @ EndPos - @ BeginPos ) + 1 TERWIJL ( @ BeginPos > 0 AND @ EndPos > 0 AND @ Len > 0 ) BEGIN SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Lengte , ' CHAR ( 13 ) + CHAR ( 10 ) ' ) SET @ BeginPos = CHARINDEX ( ' ' , @ DirtyText ) SET @ EndPos = @ BeginPos + SET 4 @ Len = ( @ EndPos - @ BeginPos ) + 1 END - Vervang alle tags met een nieuwe regel SET @ BeginPos = CHARINDEX ( ' ' , @ DirtyText ) SET @ EndPos = @ BeginPos + 5 SET @ Len = ( @ EndPos - @ BeginPos ) + 1 TERWIJL ( @ BeginPos > 0 AND @ EndPos > 0 AND @ Len > 0 ) BEGIN SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Lengte , ' CHAR ( 13 ) + CHAR ( 10 ) ' ) SET @ BeginPos = CHARINDEX ( ' ' , @ DirtyText ) SET @ EndPos = @ BeginPos + SET 5 @ Len = ( @ EndPos - @ BeginPos ) + 1 END - Verwijder alles tussen labels SET @ BeginPos = CHARINDEX ( ' < ' , @ DirtyText ) SET @ EndPos = CHARINDEX ( ' > ' , @ DirtyText , CHARINDEX ( ' < ' , @ DirtyText ) ) SET @ Len = ( @ EndPos - @ BeginPos ) + 1 TERWIJL ( @ BeginPos > 0 AND @ EndPos > 0 AND @ Len > ; 0 ) BEGIN SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Lengte , '' ) SET @ BeginPos = CHARINDEX ( ' < ' , @ DirtyText ) < br SET > @ EndPos = CHARINDEX ( ' > ' , @ DirtyText , CHARINDEX ( ' < ' , @ DirtyText ) ) SET @ Len = ( @ EndPos - @ BeginPos ) + 1 < br > END RETURN LTRIM ( RTRIM ( @ DirtyText ) ) END 3 Compileer de SQL-functie . < br > 4 uitvoeren van de functie , en controleer of deze het gewenste resultaat geeft . Bijvoorbeeld : Kies uit dbo.CleanHTML ( ' -test < /BODY > < /HTML > ' ) ; < br > |