conversion HTML au texte SQL peut être fait efficacement avec une fonction définie par l'utilisateur . Une fonction définie par l'utilisateur accepte les paramètres , exécute une action, telle que l'analyse HTML et renvoie le résultat sous forme de valeur . La fonction peut être exécutée à partir de n'importe quelle instruction SQL ou langage de programmation externe. Choses que vous devez
Connaissance intermédiaire de T -SQL
permissions appropriées afin de créer une base de données objet fonction
Afficher plus Instructions
1
Connectez-vous à votre base de données, et . créer un nouveau fichier SQL
2
Entrez le SQL suivante :
CREATE FUNCTION [ dbo] [ CleanHTML ]
(produits
@ . DirtyText varchar ( MAX)
)
RETURNS varchar ( MAX)
AS
BEGIN
DECLARE @ BeginPos int
DECLARE @ EndPos int
DECLARE @ Len int
- Remplacer l'entité HTML et avec le caractère '&' ( ce qui doit être fait en premier, comme
< p > - '&' pourrait être le double codé comme «&» )
SET @ BeginPos = CHARINDEX ( '&' , @ DirtyText )
SET @ = @ EndPos BeginPos + 4 < br >
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
TOUT (@ BeginPos > 0 et @ EndPos > 0 et @ Len > 0) BEGIN
SET @ DirtyText = STUFF (@ DirtyText , @ BeginPos , @ Length , '&' )
SET @ BeginPos = CHARINDEX ( '&' , @ DirtyText )
SET @ = @ EndPos BeginPos + 4
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
End of
- Remplacer l'entité HTML < par le caractère ' < ' < br >
SET @ BeginPos = CHARINDEX ( '<', @ DirtyText )
SET @ = @ eNDPOS BeginPos + 3
SET @ len = (@ eNDPOS - @ BeginPos ) + 1
TOUT (@ BeginPos > 0 et @ EndPos > 0 et @ Len > 0) BEGIN
SET @ DirtyText = STUFF (@ DirtyText , @ BeginPos , @ Length , '< ; ')
SET @ BeginPos = CHARINDEX ( ' <', @ DirtyText )
SET @ = @ eNDPOS BeginPos + 3
SET @ len = (@ endPos - @ BeginPos ) + 1
End of
- Remplacer l'entité HTML> avec le '>' caractère
SET @ BeginPos = CHARINDEX ( '>' , @ DirtyText )
SET @ = @ EndPos BeginPos + 3
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
TOUT (@ BeginPos > 0 ET @ EndPos > 0 et @ Len > 0) BEGIN
SET @ DirtyText = STUFF (@ DirtyText , @ BeginPos , @ Length , '>' )
SET @ BeginPos = CHARINDEX ( '>' @ DirtyText )
SET @ = @ eNDPOS BeginPos + 3
SET @ len = (@ eNDPOS - @ BeginPos ) + 1
END
- Remplacer l'entité HTML et avec le caractère '&'
SET @ BeginPos = CHARINDEX ( '&' , @ DirtyText )
SET @ = @ EndPos BeginPos + 4
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
TOUT (@ BeginPos > 0 et @ EndPos > 0 et @ Len > 0 ) commencent
< p> SET @ DirtyText = STUFF (@ DirtyText , @ BeginPos , @ Length , '&' )
SET @ BeginPos = CHARINDEX ( '&' , @ DirtyText )
SET @ EndPos = @ BeginPos + 4
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
End of
- Remplacer l'entité HTML avec le caractère ' < br >
SET @ = @ eNDPOS BeginPos + 5
SET @ len = (@ eNDPOS - @ BeginPos ) + 1
TOUT (@ BeginPos > 0 et @ EndPos > 0 et @ Len > 0) BEGIN
SET @ DirtyText = STUFF (@ DirtyText , @ BeginPos , @ Length , ' »)
SET @ BeginPos = CHARINDEX ('' , @ DirtyText )
SET @ = @ EndPos BeginPos + 5
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
End of
- Remplacer les étiquettes avec un saut de ligne
SET @ BeginPos = CHARINDEX ('', @ DirtyText )
SET @ = @ EndPos BeginPos + 3
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
TOUT (@ BeginPos > 0 et @ EndPos > 0 et @ Len > 0) BEGIN
SET @ DirtyText = STUFF (@ DirtyText , @ BeginPos , @ Length , CHAR (13) + CHAR (10 ) )
SET @ BeginPos = CHARINDEX ('', @ DirtyText )
SET @ = @ EndPos BeginPos + 3
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
End of
- Remplacez tout
balises avec un saut de ligne
SET @ BeginPos = CHARINDEX ('
', @ DirtyText )
SET @ = @ EndPos BeginPos + 4 Photos
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
TOUT (@ BeginPos > 0 et @ EndPos > 0 et @ 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 of
- Remplacez les balises
avec un saut de ligne
SET @ BeginPos = CHARINDEX ( '
', @ DirtyText )
SET @ = @ eNDPOS BeginPos + 5 Photos
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
TOUT (@ BeginPos > 0 et @ EndPos > 0 et @ Len > 0) BEGIN
< p > SET @ DirtyText = STUFF (@ DirtyText , @ BeginPos , @ Length , ' CHAR ( 13) + CHAR (10 )')
SET @ BeginPos = CHARINDEX ( '
', @ DirtyText )
SET @ = @ EndPos BeginPos + 5
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
End of
- Retirez tout entre les balises
SET @ BeginPos = CHARINDEX ( '<', @ DirtyText )
SET @ EndPos = CHARINDEX ( '>' , @ DirtyText , CHARINDEX ( '<', @ DirtyText ) )
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
TOUT (@ BeginPos > 0 et @ EndPos > 0 et @ Len > ; 0) BEGIN
SET @ DirtyText = STUFF (@ DirtyText , @ BeginPos , @ Length ,'')
SET @ BeginPos = CHARINDEX ( '<', @ DirtyText ) < br >
SET @ EndPos = CHARINDEX ( '>' , @ DirtyText , CHARINDEX ( '<', @ DirtyText ) )
SET @ Len = ( @ EndPos - @ BeginPos ) + 1 < br >
End of
RETOUR LTRIM ( RTRIM (@ DirtyText ) )
FIN
3
Compiler la fonction SQL.
< br > 4
exécuter la fonction , et vérifiez qu'il renvoie les résultats souhaités. Par exemple:
Choisissez parmi dbo.CleanHTML (' essai
');