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 ;