Conversão de HTML para texto em SQL pode ser feito de forma eficiente com uma função definida pelo usuário. Uma função definida pelo usuário aceita parâmetros , executa uma ação, como análise de HTML , e retorna o resultado como um valor. A função pode ser executado a partir de qualquer instrução SQL ou linguagem de programação externa. Coisas que você precisa
conhecimento intermediário de T -SQL
permissões adequadas para criar um objeto de banco de dados função
Show Mais instruções
1
Ligue para o seu banco de dados, e criar um novo arquivo SQL
2
Digite o seguinte SQL: . .
CREATE FUNCTION [dbo] [ CleanHTML ]
(
@ DirtyText varchar ( MAX)
)
RETURNS varchar ( MAX)
AS
BEGIN
DECLARE @ BeginPos int
DECLARE @ EndPos int
DECLARE @ Len int
- Substitua a entidade HTML e com o caractere '&' ( isso precisa ser feito primeiro, como
- 'e' pode ser o dobro codificado como '& ')
SET @ BeginPos = CHARINDEX ('& ', @ DirtyText )
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 , 'e' )
SET @ BeginPos = CHARINDEX ('& ', @ DirtyText )
SET @ EndPos = @ BeginPos +
4
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END
- Substitua a entidade HTML < com o '<' caráter < br >
SET @ BeginPos = CHARINDEX ( '<' , @ DirtyText )
@ EndPos = @ BeginPos SET + 3
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
WHILE ( @ BeginPos > 0 e @ EndPos > 0 e @ Len > 0) BEGIN
SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Length , '< ; ')
set @ BeginPos = CHARINDEX ( ' <' , @ DirtyText )
set @ EndPos = @ BeginPos + 3
set @ Len = ( @ EndPos - @ BeginPos ) + 1
END
- Substitua a entidade HTML> com o caractere ' > ' em
SET @ BeginPos = CHARINDEX ( '>' , @ DirtyText )
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 , '> ')
SET @ BeginPos = CHARINDEX ( '>' , @ DirtyText )
set @ EndPos = @ BeginPos + 3
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END
- Substitua a entidade HTML e com o caractere '&'
SET @ BeginPos = CHARINDEX ('& ', @ DirtyText )
SET @ EndPos = @ BeginPos +
4
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
WHILE ( @ BeginPos > 0 e @ EndPos > 0 e @ Len > 0) BEGIN
SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Length , 'e' )
SET @ BeginPos = CHARINDEX ('& ', @ DirtyText )
SET @ EndPos = @ BeginPos + 4
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END
- Substitua a entidade HTML com o caractere ' '
SET @ BeginPos = CHARINDEX ('' , @ DirtyText )
set @ EndPos = @ BeginPos + 5
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
WHILE ( @ BeginPos > 0 e @ EndPos > 0 e @ Len > 0) BEGIN
SET @ DirtyText = STUFF ( @ DirtyText , @ BeginPos , @ Length ' ')
SET @ BeginPos = CHARINDEX (' ' , @ DirtyText
BeginPos set @ EndPos = +) 5
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END
- Substitua todas as tags com uma nova linha
SET @ BeginPos = CHARINDEX ('', @ DirtyText )
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) )
SET @ BeginPos = CHARINDEX ('', @ DirtyText )
set @ EndPos = @ BeginPos + 3
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END
- Substitua todas as tags
com uma nova linha
SET @ BeginPos = CHARINDEX ('
', @ DirtyText )
SET @ EndPos = @ BeginPos + 4
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) ')
SET @ BeginPos = CHARINDEX ('
', @ DirtyText )
set @ EndPos = @ BeginPos + 4
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END
- Substitua todas as tags
com uma nova linha
SET @ BeginPos = CHARINDEX (' />
SET @ EndPos = @ BeginPos + 5
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) ')
SET @ BeginPos = CHARINDEX (' />
set @ EndPos = @ BeginPos + 5
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
END
- Remova qualquer coisa entre as tags
set @ BeginPos = CHARINDEX ( ' < ', @ DirtyText )
SET @ EndPos = CHARINDEX ( '>' , @ DirtyText , CHARINDEX ( '<' , @ DirtyText ) )
SET @ Len = ( @ EndPos - @ BeginPos ) + 1
while ( @ BeginPos > 0 e @ EndPos > 0 e @ 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
DEVOLVER LTRIM ( RTRIM ( @ DirtyText ) )
END
3
Compilar a função SQL.
< br > 4
Executar a função e verificar se ele retorna os resultados desejados. Por exemplo :
Selecione a partir de dbo.CleanHTML ('
teste ');