Konvertering HTML til tekst i SQL kan gøres effektivt med en brugerdefineret funktion . En brugerdefineret funktion accepterer parametre , udfører en handling, såsom parsing HTML, og returnerer resultatet som en værdi. Funktionen kan udføres fra enhver SQL-sætning eller ekstern programmeringssprog. Ting du skal
Intermediate kendskab til T- SQL
tilstrækkelige tilladelser til at oprette en funktion databaseobjekt
Vis Flere Instruktioner
1
Forbind til din database , og . oprette en ny SQL-fil
2
Indtast følgende SQL : Hej
CREATE FUNCTION [ dbo ] [ CleanHTML ]
(
@ . DirtyText varchar ( MAX)
)
RETURNS varchar ( MAX)
AS
BEGIN
DECLARE @ BeginPos int
DECLARE @ EndPos int
DECLARE @ Len int
- Udskift HTML enhed & med '&' tegn ( dette skal gøres først, da
< p > - '&' måske dobbelt kodet som '&' )
SET @ BeginPos = CHARINDEX ( ' &' , @ DirtyText )
SET @ EndPos = @ BeginPos + 4 < br >
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
MENS ( @ BeginPos > 0 og @ EndPos > 0 og @ Len > 0) BEGIN
SET @ DirtyText = STUFF ( @ DirtyText @ BeginPos @ længde, '&' )
SET @ BeginPos = CHARINDEX ( ' &' , @ DirtyText )
SET @ EndPos = @ BeginPos + 4 fotos
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END
- Udskift HTML enhed < med "<" tegnet < br >
SET @ BeginPos = CHARINDEX ( '< ', @ DirtyText )
SET @ EndPos = @ BeginPos + 3 fotos
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
( @ BeginPos > 0 og @ EndPos > 0 og @ Len > 0) BEGIN
SET @ DirtyText = STUFF ( @ DirtyText @ BeginPos @ længde, '< « )
SET @ BeginPos = CHARINDEX ( '< ', @ DirtyText )
SET @ EndPos = @ BeginPos + 3 fotos
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END
- Udskift HTML enhed > med '>' tegnet
SET @ BeginPos = CHARINDEX ( '>' @ DirtyText )
SET @ EndPos = @ BeginPos + 3 fotos
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
MENS ( @ BeginPos > 0 OG @ EndPos > 0 og @ Len > 0) BEGIN
SET @ DirtyText = STUFF ( @ DirtyText @ BeginPos @ længde, '>' )
SET @ BeginPos = CHARINDEX ( '>' , @ DirtyText )
SET @ EndPos = @ BeginPos + 3 fotos
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END < br >
- Udskift HTML enhed & med '&' tegn
SET @ BeginPos = CHARINDEX ( ' &' , @ DirtyText )
SET @ EndPos = @ BeginPos + 4 fotos
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
MENS ( @ BeginPos > 0 og @ EndPos > 0 og @ Len > 0) BEGIN
< p> SET @ DirtyText = STUFF ( @ DirtyText @ BeginPos @ længde, '&' )
SET @ BeginPos = CHARINDEX ( ' &' , @ DirtyText )
SET @ EndPos = @ BeginPos + 4 fotos
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END
- Udskift HTML enhed med den ' tegnet < br >
SET @ BeginPos = CHARINDEX ( ', @ DirtyText )
SET @ EndPos = @ BeginPos + 5
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
MENS ( @ BeginPos > 0 og @ EndPos > 0 og @ Len > 0) BEGIN
SET @ DirtyText = STUFF ( @ DirtyText @ BeginPos @ længde, ' ' )
SET @ BeginPos = CHARINDEX ( ' @ DirtyText )
SET @ EndPos = @ BeginPos + 5
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END
- Udskift tags med en newline
SET @ BeginPos = CHARINDEX ( '' , @ DirtyText )
SET @ EndPos = @ BeginPos + 3 fotos
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
MENS ( @ BeginPos > 0 og @ EndPos > 0 og @ Len > 0) BEGIN
SET @ DirtyText = STUFF ( @ DirtyText @ BeginPos @ længde, CHAR ( 13) + CHAR ( 10) )
SET @ BeginPos = CHARINDEX ( '' , @ DirtyText )
SET @ EndPos = @ BeginPos + 3 fotos
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END
- Udskift eventuelle
tags med en newline
SET @ BeginPos = CHARINDEX ( '
' @ DirtyText )
SET @ EndPos = @ BeginPos + 4
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
MENS ( @ BeginPos > 0 og @ EndPos > 0 og @ Len > 0) BEGIN
< p > SET @ DirtyText = STUFF ( @ DirtyText @ BeginPos @ længde, ' CHAR ( 13) + CHAR ( 10 )')
SET @ BeginPos = CHARINDEX ( '
' @ DirtyText )
SET @ EndPos = @ BeginPos + 4 fotos
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END
- Udskift eventuelle
tags med en newline
SET @ BeginPos = CHARINDEX ( '
', @ DirtyText )
SET @ EndPos = @ BeginPos + 5
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
MENS ( @ BeginPos > 0 og @ EndPos > 0 og @ Len > 0) BEGIN
< p > SET @ DirtyText = STUFF ( @ DirtyText @ BeginPos @ længde, ' CHAR ( 13) + CHAR ( 10 )')
SET @ BeginPos = CHARINDEX ( '
' , @ DirtyText )
SET @ EndPos = @ BeginPos + 5
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END
- Fjern alt mellem tags
SET @ BeginPos = CHARINDEX ( '< ' , @ DirtyText )
SET @ EndPos = CHARINDEX ( '>' , @ DirtyText , CHARINDEX ( '< ' , @ DirtyText ) )
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
MENS ( @ BeginPos > 0 og @ EndPos > 0 og @ Len > ; 0) BEGIN
SET @ DirtyText = STUFF ( @ DirtyText @ BeginPos @ længde, '' )
SET @ BeginPos = CHARINDEX ( '< ' , @ DirtyText ) < br >
SET @ EndPos = CHARINDEX ( ' >' , @ DirtyText , CHARINDEX ( '< ' , @ DirtyText ) )
SET @ Len = ( @ EndPos - @ BeginPos ) + 1 < br >
END
RETURN ltrim ( RTRIM ( @ DirtyText ) )
END
3
Kompiler SQL -funktionen.
< br > 4.
Udfør funktionen , og kontroller, at den returnerer de ønskede resultater. For eksempel : Hej
Vælg mellem dbo.CleanHTML (
test < /HTML > ');
< br >