Konvertieren von HTML , Text in SQL effizient mit einer benutzerdefinierten Funktion erfolgen. Eine benutzerdefinierte Funktion Parameter akzeptiert , eine Aktion ausführt , wie das Parsen von HTML , und gibt das Ergebnis als Wert . Die Funktion kann von jeder SQL-Anweisung oder externe Programmiersprache ausgeführt werden. Things You 
 Intermediate Wissen von T -SQL 
 Ausreichende Berechtigungen brauchen , um eine Funktion Datenbank-Objekt erstellen 
 anzeigen Weitere Anweisungen 
 1 
 Verbinden mit einer Datenbank , und . erstellen Sie eine neue SQL-Datei 
 2 
 Geben Sie die folgende SQL: 
 
 CREATE FUNCTION [dbo ] [ CleanHTML ] 
 
 ( 
 
 @ . DirtyText varchar ( MAX) 
 
 ) 
 
 Rückgabe VARCHAR (MAX) 
 
 AS 
 
 BEGIN DECLARE @ 
 
 BeginPos int 
 
 DECLARE @ EndPos int 
 
 DECLARE @ Len int 
 
 - Ersetzen Sie die HTML-Entität & mit dem Zeichen '&' ( diese muss zuerst getan werden , als Werbeartikel 
 - '&' vielleicht doppelt so '&' ) 
 
 SET codiert werden @ BeginPos = CHARINDEX ('& ', @ DirtyText ) 
 
 SET @ EndPos = @ BeginPos + 4 
 
 SET @ Len = ( @ EndPos - @ BeginPos ) + 1 
 
 WHILE ( @ BeginPos > 0 AND @ EndPos > 0 AND @ Len > 0) BEGIN 
 
 SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Length , '&' ) 
 
 SET @ BeginPos = CHARINDEX ('& ', @ DirtyText ) 
 
 SET @ EndPos = @ BeginPos + 4 
 
 SET @ Len = ( @ EndPos - @ BeginPos ) + 1 
 
 END 
 
 - Ersetzen Sie die HTML-Entität < mit dem '<' Zeichen 
 
 SET @ BeginPos = CHARINDEX ( '< ', @ DirtyText ) 
 
 SET @ @ BeginPos EndPos = + 3 
 
 SET @ Len = ( @ EndPos - @ BeginPos ) + 1 of 
 WHILE ( @ BeginPos > 0 AND @ EndPos > 0 AND @ Len > 0) BEGIN 
 
 SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Length , '< ; ') 
 
 SET @ BeginPos = CHARINDEX ( ' < ', @ DirtyText ) 
 
 SET @ @ BeginPos EndPos = + 3 
 
 SET @ Len = ( @ EndPos - @ BeginPos ) + 1 
 
 END 
 
 - Ersetzen Sie die HTML entity> mit dem Zeichen '>' 
 
 SET @ BeginPos = CHARINDEX ( '>' , @ DirtyText ) 
 
 SET @ @ BeginPos EndPos = + 3 
 
 SET @ Len = ( @ EndPos - @ BeginPos ) + 1 
 
 WHILE ( @ BeginPos > 0 UND @ EndPos > 0 AND @ Len > 0) BEGIN 
 
 SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Length , '> ') 
 
 SET @ BeginPos = CHARINDEX ( '> ', @ DirtyText ) 
 
 SET @ @ BeginPos EndPos = + 3 
 
 SET @ Len = ( @ EndPos - @ BeginPos ) + 1 
 
 END 
 
 - Ersetzen Sie die HTML-Entität & mit dem Zeichen '&' 
 
 SET @ BeginPos = CHARINDEX ('& ', @ DirtyText ) 
 
 SET @ EndPos = @ BeginPos + 4 
 
 SET @ Len = ( @ EndPos - @ BeginPos ) + 1 
 
 WHILE ( @ BeginPos > 0 AND @ EndPos > 0 AND @ Len > 0) BEGIN 
 < p> SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Length , '&' ) 
 
 SET @ BeginPos = CHARINDEX ('& ', @ DirtyText ) 
 
 SET @ EndPos = @ BeginPos + 4 
 
 SET @ Len = ( @ EndPos - @ BeginPos ) + 1 
 
 END 
 
 - Ersetzen Sie die HTML-Entität mit dem ""-Zeichen 
 
 SET @ BeginPos = CHARINDEX ('' , @ DirtyText ) 
 
 SET @ @ BeginPos EndPos = + 5 
 
 SET @ Len = ( @ EndPos - @ BeginPos ) + 1 
 
 WHILE ( @ BeginPos > 0 AND @ EndPos > 0 AND @ Len > 0) BEGIN 
 
 SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Length " ') 
 
 SET @ BeginPos = CHARINDEX (' ' , @ DirtyText ) 
 
 SET @ @ BeginPos EndPos = + 5 
 
 SET @ Len = ( @ EndPos - @ BeginPos ) + 1 
 
 END 
 
 - Ersetzen Sie alle Tags mit einem Zeilenumbruch 
 
 SET @ BeginPos = CHARINDEX ('', @ DirtyText ) 
 
 SET @ @ BeginPos EndPos = + 3 
 
 SET @ Len = ( @ EndPos - @ BeginPos ) + 1 
 
 WHILE ( @ BeginPos > 0 AND @ EndPos > 0 AND @ Len > 0) BEGIN 
 
 SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Length , CHAR ( 13) + CHAR (10) ) 
 
 SET @ BeginPos = CHARINDEX ('', @ DirtyText ) 
 
 SET @ @ BeginPos EndPos = + 3 
 
 SET @ Len = ( @ EndPos - @ BeginPos ) + 1 
 
 END 
 
 - ersetzen Sie alle 
 Tags mit einem Zeilenumbruch 
 
 SET @ BeginPos = CHARINDEX ( '
 ', @ DirtyText ) 
 
 SET @ EndPos = @ BeginPos + 4 
 
 SET @ Len = ( @ EndPos - @ BeginPos ) + 1 
 
 WHILE ( @ BeginPos > 0 AND @ EndPos > 0 AND @ Len > 0) BEGIN 
 < p > SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Length " CHAR ( 13) + CHAR (10) ') 
 
 SET @ BeginPos = CHARINDEX ( ' 
 ', @ DirtyText ) 
 
 SET @ EndPos = @ BeginPos + 4 
 
 SET @ Len = ( @ EndPos - @ BeginPos ) + 1 
 
 END 
 
 - Ersetzen Sie alle 
-Tags mit einem Zeilenumbruch 
 
 SET @ BeginPos = CHARINDEX ( '
 ', @ DirtyText ) 
 
 SET @ @ BeginPos EndPos = + 5 
 
 SET @ Len = ( @ EndPos - @ BeginPos ) + 1 
 
 WHILE ( @ BeginPos > 0 AND @ EndPos > 0 AND @ Len > 0) BEGIN 
 < p > SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Length " CHAR ( 13) + CHAR (10) ') 
 
 SET @ BeginPos = CHARINDEX ( ' 
 ', @ DirtyText ) 
 
 SET @ @ BeginPos EndPos = + 5 
 
 SET @ Len = ( @ EndPos - @ BeginPos ) + 1 
 
 END 
 
 - entfernen Sie alles zwischen  Tags 
  SET @ BeginPos = CHARINDEX ( '< ', @ DirtyText ) 
 
 SET @ EndPos = CHARINDEX ( '> ', @ DirtyText , CHARINDEX ( '< ', @ DirtyText ) ) 
 
 SET @ Len = ( @ EndPos - @ BeginPos ) + 1 
 
 WHILE ( @ BeginPos > 0 AND @ EndPos > 0 AND @ Len > ; 0) BEGIN 
 
 SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Length ,'') 
 
 SET @ BeginPos = CHARINDEX ( '< ', @ DirtyText ) 
 
 SET @ EndPos = CHARINDEX ( '> ', @ DirtyText , CHARINDEX ( '< ', @ DirtyText ) ) 
 
 SET @ Len = ( @ EndPos - @ BeginPos ) + 1 
 
 END 
 
 RETURN LTRIM ( RTRIM ( @ DirtyText ) ) 
 
 END 
 3 
 Kompilieren der SQL-Funktion . 
 < br > 4 
 Führen Sie die Funktion , und stellen Sie sicher , dass es die gewünschten Ergebnisse zurückgibt. Zum Beispiel: 
 
 von dbo.CleanHTML ( '  
 test < /BODY>  ') auswählen ;