Konvertera HTML till text i SQL kan göras effektivt med en användardefinierad funktion . En användardefinierad funktion accepterar parametrar , utför en åtgärd , såsom att analysera HTML , och returnerar resultatet som ett värde . Funktionen kan köras från en SQL-sats eller extern programmeringsspråk . Saker du behöver
Intermediate kunskaper i T - SQL
rätt behörighet för att skapa en funktion databasobjekt
Visa fler instruktioner
1
Anslut till databasen , och . skapa en ny SQL -fil
2
Skriv in följande SQL :
sKAPA FUNCTION [ dbo ] [ CleanHTML ]
(
@ . DirtyText varchar ( MAX ) katalog
) katalog
AVKASTNING varchar ( MAX ) katalog
AS
BEGIN
FÖRKLARA @ BeginPos int
FÖRKLARA @ EndPos int
FÖRKLARA @ Len int
- Byt HTML enhet och med " & " tecknet ( detta måste göras först , eftersom
- ' & ' kan vara dubbelt kodas som " & " ) katalog
SET @ BeginPos = charIndex ( ' & ' , @ DirtyText ) katalog
SET @ EndPos = @ BeginPos + 4
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
( @ BeginPos > 0 och @ EndPos > 0 och @ Len > 0 ) BEGIN
SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Längd , ' & ' ) katalog
SET @ BeginPos = charIndex ( ' & ' , @ DirtyText ) katalog
SET @ EndPos = @ BeginPos + 4
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END
- Byt HTML enhet < med ' < ' tecknet
SET @ BeginPos = charIndex ( '<' , @ DirtyText ) katalog
SET @ EndPos = @ BeginPos + 3
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
( @ BeginPos > 0 och @ EndPos > 0 och @ Len > 0 ) BEGIN
SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Längd , ' < , ' ) katalog
SET @ BeginPos = charIndex ( ' <' , @ DirtyText ) katalog
SET @ EndPos = @ BeginPos + 3
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END
- Byt HTML enhet > med ' > ' tecknet
SET @ BeginPos = charIndex ( ' > ' , @ DirtyText ) katalog
SET @ EndPos = @ BeginPos + 3
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
( @ BeginPos > 0 OCH @ EndPos > 0 och @ Len > 0 ) BEGIN
SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Längd , ' > ' ) katalog
SET @ BeginPos = charIndex ( '>' , @ DirtyText ) katalog
SET @ EndPos = @ BeginPos + 3
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END
- Byt HTML enhet och med ' & ' tecknet
SET @ BeginPos = charIndex ( ' & ' , @ DirtyText ) katalog
SET @ EndPos = @ BeginPos + 4
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
( @ BeginPos > 0 och @ EndPos > 0 AND @ Len > 0 ) BEGIN
SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Längd , ' & ' ) katalog
SET @ BeginPos = charIndex ( ' & ' , @ DirtyText ) katalog
SET @ EndPos = @ BeginPos + 4
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END
- Byt HTML enhet med tecknet ""
SET @ BeginPos = charIndex ( ' ' , @ DirtyText ) katalog
SET @ EndPos = @ BeginPos + 5
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
( @ BeginPos > 0 och @ EndPos > 0 och @ Len > 0 ) BEGIN
SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Längd , ' ' ) katalog
SET @ BeginPos = charIndex ( ' ' , @ DirtyText ) katalog
SET @ EndPos = @ BeginPos + 5
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END
- Byt ut etiketter med en newline
SET @ BeginPos = charIndex ( '' , @ DirtyText ) katalog
SET @ EndPos = @ BeginPos + 3
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
( @ BeginPos > 0 och @ EndPos > 0 och @ Len > 0 ) BEGIN
SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Längd , CHAR ( 13 ) + CHAR ( 10 ) ) katalog
SET @ BeginPos = charIndex ( '' , @ DirtyText ) katalog
SET @ EndPos = @ BeginPos + 3
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END
- ersätta någon
taggar med en newline
SET @ BeginPos = charIndex ( '
' , @ DirtyText ) katalog
SET @ EndPos = @ BeginPos + 4
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
( @ BeginPos > 0 och @ EndPos > 0 och @ Len > 0 ) BEGIN
SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Längd , " CHAR ( 13 ) + CHAR ( 10 ) ' ) katalog
SET @ BeginPos = charIndex ( '
" , @ DirtyText ) katalog
SET @ EndPos = @ BeginPos + 4
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END
- Byt ut eventuella
taggarna med en newline
SET @ BeginPos = charIndex ( '
' , @ DirtyText ) katalog
SET @ EndPos = @ BeginPos + 5
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
( @ BeginPos > 0 och @ EndPos > 0 och @ Len > 0 ) BEGIN
SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Längd , " CHAR ( 13 ) + CHAR ( 10 ) ' ) katalog
SET @ BeginPos = charIndex ( '
' , @ DirtyText ) katalog
SET @ EndPos = @ BeginPos + 5
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END
- Ta bort allt mellan taggar
SET @ BeginPos = charIndex ( ' < ' , @ DirtyText ) katalog
SET @ EndPos = charIndex ( ' > ' , @ DirtyText , charIndex ( ' < ' , @ DirtyText ) ) katalog
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
( @ BeginPos > 0 och @ EndPos > 0 och @ Len > ; 0 ) BEGIN
SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Längd , '' ) katalog
SET @ BeginPos = charIndex ( ' < ' , @ DirtyText )
SET @ EndPos = charIndex ( ' > ' , @ DirtyText , charIndex ( ' < ' , @ DirtyText ) ) katalog
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END
RETURN LTRIM ( RTRIM ( @ DirtyText ) ) katalog
END
3
Kompilera SQL-funktionen .
4
Utför funktionen , och kontrollera att den återgår de önskade resultaten . Till exempel :
Välj från dbo.CleanHTML ( '
testet < /BODY > < /HTML > ');