Conversione HTML in testo in SQL può essere fatto in modo efficiente con una funzione definita dall'utente . Una funzione definita dall'utente accetta parametri, esegue un'azione, come ad esempio il parsing HTML , e restituisce il risultato sotto forma di valore . La funzione può essere eseguita da qualsiasi istruzione SQL o linguaggio di programmazione esterno . Cose che ti serviranno
conoscenza intermedia della T - SQL
autorizzazioni adeguate per creare una funzione di database oggetto
Show More Istruzioni
1
connettersi al database , e . creare un nuovo file SQL
2
Inserisci il seguente SQL :
CREATE FUNCTION [ dbo ] [ CleanHTML ]
(
@ . DirtyText varchar ( MAX ) per
) per
RETURNS varchar ( MAX ) per
AS
BEGIN
DECLARE @ BeginPos int
DECLARE @ endpos int
DECLARE @ Len int
- Sostituire l'entità HTML e con il carattere '&' ( questo deve essere fatto prima , come
< p > - '&' potrebbe essere doppio codificato come '&' ) per
SET @ BeginPos = CHARINDEX ( '&' , @ DirtyText ) per
SET @ endpos = @ BeginPos + 4 < br
SET > @ Len = ( @ endpos - @ BeginPos ) + 1
WHILE ( @ BeginPos > 0 e @ endpos > 0 e @ Len > 0 ) BEGIN
SET @ DirtyText = STUFF ( @ DirtyText , BeginPos @ , @ Length , '&' ) per
SET @ BeginPos = CHARINDEX ( '&' , @ DirtyText ) per
SET @ endpos = @ BeginPos + 4
SET @ Len = ( @ endpos - @ BeginPos ) + 1
END
- Sostituire il codice HTML entità < con il carattere '<' < br
> @ BeginPos = CHARINDEX ( '<' , @ DirtyText ) per
SET @ endpos = @ BeginPos + 3
SET @ Len = ( @ endpos - @ BeginPos ) + 1
WHILE ( @ BeginPos > 0 e @ endpos > 0 e @ Len > 0 ) BEGIN
SET @ DirtyText = STUFF ( @ DirtyText , BeginPos @ , @ Length , ' < ; ' ) per
SET @ BeginPos = CHARINDEX ( ' <' , @ DirtyText ) per
SET @ endpos = @ BeginPos + 3
SET @ Len = ( @ endpos - @ BeginPos ) + 1
END
- Sostituire il codice HTML entità > con il '>' carattere
SET @ BeginPos = CHARINDEX ( '>' , @ DirtyText ) per
SET @ endpos = @ BeginPos + 3
SET @ Len = ( @ endpos - @ BeginPos ) + 1
WHILE ( @ BeginPos > 0 E @ endpos > 0 e @ Len > 0 ) BEGIN
SET @ DirtyText = STUFF ( @ DirtyText , BeginPos @ , @ Lunghezza , '>' ) per
SET @ BeginPos = CHARINDEX ( '>' , @ DirtyText ) per
SET @ endpos = @ BeginPos + 3
SET @ Len = ( @ endpos - @ BeginPos ) + 1
END
- Sostituire l'entità HTML e con il carattere '&'
SET @ BeginPos = CHARINDEX ( '&' , @ DirtyText ) per
SET @ endpos = @ BeginPos + 4
SET @ Len = ( @ endpos - @ BeginPos ) + 1
WHILE ( @ BeginPos > 0 e @ endpos > 0 e @ Len > 0 ) BEGIN
< p > SET @ DirtyText = STUFF ( @ DirtyText , BeginPos @ , @ Length , '&' ) per
SET @ BeginPos = CHARINDEX ( '&' , @ DirtyText ) per
SET @ endpos = @ BeginPos + 4
SET @ Len = ( @ endpos - @ BeginPos ) + 1
END
- Sostituire l'entità HTML con il carattere ' ' < br
> @ BeginPos = CHARINDEX ('' , @ DirtyText ) per
SET @ endpos = @ BeginPos + 5
SET @ Len = ( @ endpos - @ BeginPos ) + 1
WHILE ( @ BeginPos > 0 e @ endpos > 0 e @ Len > 0 ) BEGIN
SET @ DirtyText = STUFF ( @ DirtyText , BeginPos @ , @ Lunghezza , ' ' ) per
SET @ BeginPos = CHARINDEX (' ' , @ DirtyText ) per
SET @ endpos = @ BeginPos + 5
SET @ Len = ( @ endpos - @ BeginPos ) + 1
END
- Sostituire i tag con un a capo
SET @ BeginPos = CHARINDEX ( '' , @ DirtyText ) per
SET @ endpos = @ BeginPos + 3
SET @ Len = ( @ endpos - @ BeginPos ) + 1
WHILE ( @ BeginPos > 0 e @ endpos > 0 e @ Len > 0 ) BEGIN
SET @ DirtyText = STUFF ( @ DirtyText , BeginPos @ , @ Length , CHAR ( 13) + CHAR ( 10) ) per
SET @ BeginPos = CHARINDEX ( '' , @ DirtyText ) per
SET @ endpos = @ BeginPos + 3
SET @ Len = ( @ endpos - @ BeginPos ) + 1
END
- sostituire eventuali
tag con un a capo
SET @ BeginPos = CHARINDEX ( '
' , @ DirtyText ) per
SET @ endpos = @ BeginPos + 4
SET @ Len = ( @ endpos - @ BeginPos ) + 1
WHILE ( @ BeginPos > 0 e @ endpos > 0 e @ Len > 0 ) BEGIN
< p > SET @ DirtyText = STUFF ( @ DirtyText , BeginPos @ , @ Lunghezza , ' CHAR ( 13) + CHAR ( 10) ' ) per
SET @ BeginPos = CHARINDEX ( '
' , @ DirtyText ) per
SET @ endpos = @ BeginPos + 4
SET @ Len = ( @ endpos - @ BeginPos ) + 1
END
- sostituire i tag
con un a capo
SET @ BeginPos = CHARINDEX ( '
', @ DirtyText ) per
SET @ endpos = @ BeginPos + 5
SET @ Len = ( @ endpos - @ BeginPos ) + 1
WHILE ( @ BeginPos > 0 e @ endpos > 0 e @ Len > 0 ) BEGIN
< p > SET @ DirtyText = STUFF ( @ DirtyText , BeginPos @ , @ Lunghezza , ' CHAR ( 13) + CHAR ( 10) ' ) per
SET @ BeginPos = CHARINDEX ( '
' , @ DirtyText ) per
SET @ endpos = @ BeginPos + 5
SET @ Len = ( @ endpos - @ BeginPos ) + 1
END
- rimuovere qualsiasi cosa tra i tag
SET @ BeginPos = CHARINDEX ( '<' , @ DirtyText ) per
SET @ endpos = CHARINDEX ( '>' , @ DirtyText , CHARINDEX ( '<' , @ DirtyText ) ) per
SET @ Len = ( @ endpos - @ BeginPos ) + 1
WHILE ( @ BeginPos > 0 e @ endpos > 0 e @ Len > , 0 ) BEGIN
SET @ DirtyText = STUFF ( @ DirtyText , BeginPos @ , @ Length , '' ) per
SET @ BeginPos = CHARINDEX ( '<' , @ DirtyText ) < br
SET > @ endpos = CHARINDEX ( '>' , @ DirtyText , CHARINDEX ( '<' , @ DirtyText ) ) per
SET @ Len = ( @ endpos - @ BeginPos ) + 1 < br >
END
RITORNO LTRIM ( RTRIM ( @ DirtyText ) ) per
END
3
Compilare la funzione SQL .
< br > 4
Eseguire la funzione , e verificare che restituisce i risultati desiderati . Per esempio :
Selezionare da dbo.CleanHTML ( ' prova
< /BODY > < /HTML > ');