Converter 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, realiza uma ação, como a 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
- as permissões adequadas para criar um objeto de banco de dados função
Ligue para o seu banco de dados e criar um novo arquivo SQL.
Digite o seguinte SQL:
CREATE FUNCTION [dbo]. [CleanHTML]
(
@DirtyText Varchar (MAX)
)
RETORNOS varchar (MAX)
COMO
INÍCIO
DECLARE @BeginPos int
DECLARE @EndPos int
DECLARE @Len int
-- Substitua a entidade HTML & com o `&"Caráter (isso precisa ser feito primeiro, como
-- `&`Pode ser dupla codificado como`&`)
@BeginPos SET = CHARINDEX ( `&`, @DirtyText)
SET @EndPos = @BeginPos + 4
SET @ Len = (@EndPos - @BeginPos) + 1
While (@BeginPos gt; 0 E @EndPos gt; 0 E @Lengt; 0) BEGIN
SET @DirtyText = STUFF (@DirtyText, @BeginPos, @Length `&`)
@BeginPos SET = CHARINDEX ( `&`, @DirtyText)
SET @EndPos = @BeginPos + 4
SET @ Len = (@EndPos - @BeginPos) + 1
FIM
-- Substitua a entidade HTML lt; com o "lt; ` personagem
@BeginPos SET = charIndex ( `lt;`, @DirtyText)
SET @EndPos = @BeginPos + 3
SET @ Len = (@EndPos - @BeginPos) + 1
While (@BeginPos gt; 0 E @EndPos gt; 0 E @Lengt; 0) BEGIN
SET @DirtyText = STUFF (@DirtyText, @BeginPos, @Length, `lt;`)
@BeginPos SET = charIndex ( `lt;`, @DirtyText)
SET @EndPos = @BeginPos + 3
SET @ Len = (@EndPos - @BeginPos) + 1
FIM
-- Substitua a entidade HTML gt; com o `gt;` personagem
@BeginPos SET = charIndex ( `gt;`, @DirtyText)
SET @EndPos = @BeginPos + 3
SET @ Len = (@EndPos - @BeginPos) + 1
While (@BeginPos gt; 0 E @EndPos gt; 0 E @Lengt; 0) BEGIN
SET @DirtyText = STUFF (@DirtyText, @BeginPos, @Length, `gt;`)
@BeginPos SET = charIndex ( `gt;`, @DirtyText)
SET @EndPos = @BeginPos + 3
SET @ Len = (@EndPos - @BeginPos) + 1
FIM
-- Substitua a entidade HTML & com o `&` personagem
@BeginPos SET = CHARINDEX ( `&`, @DirtyText)
SET @EndPos = @BeginPos + 4
SET @ Len = (@EndPos - @BeginPos) + 1
While (@BeginPos gt; 0 E @EndPos gt; 0 E @Lengt; 0) BEGIN
SET @DirtyText = STUFF (@DirtyText, @BeginPos, @Length `&`)
@BeginPos SET = CHARINDEX ( `&`, @DirtyText)
SET @EndPos = @BeginPos + 4
SET @ Len = (@EndPos - @BeginPos) + 1
FIM
-- Substitua a entidade HTML com o caráter ``
@BeginPos SET = CHARINDEX ( ``, @DirtyText)
SET @EndPos = @BeginPos + 5
SET @ Len = (@EndPos - @BeginPos) + 1
While (@BeginPos gt; 0 E @EndPos gt; 0 E @Lengt; 0) BEGIN
SET @DirtyText = STUFF (@DirtyText, @BeginPos, @Length, ``)
@BeginPos SET = CHARINDEX ( ``, @DirtyText)
SET @EndPos = @BeginPos + 5
SET @ Len = (@EndPos - @BeginPos) + 1
FIM
-- Substitua todas as tags com uma nova linha
@BeginPos SET = CHARINDEX ( ``, @DirtyText)
SET @EndPos = @BeginPos + 3
SET @ Len = (@EndPos - @BeginPos) + 1
While (@BeginPos gt; 0 E @EndPos gt; 0 E @Lengt; 0) BEGIN
SET @DirtyText = STUFF (@DirtyText, @BeginPos, @Length, CHAR (13) + CHAR (10))
@BeginPos SET = CHARINDEX ( ``, @DirtyText)
SET @EndPos = @BeginPos + 3
SET @ Len = (@EndPos - @BeginPos) + 1
FIM
-- substituir qualquer
tags com uma nova linha@BeginPos SET = CHARINDEX ( `
`, @DirtyText)SET @EndPos = @BeginPos + 4
SET @ Len = (@EndPos - @BeginPos) + 1
While (@BeginPos gt; 0 E @EndPos gt; 0 E @Lengt; 0) BEGIN
SET @DirtyText = STUFF (@DirtyText, @BeginPos, @Length, `CHAR (13) + CHAR (10)`)
@BeginPos SET = CHARINDEX ( `
`, @DirtyText)SET @EndPos = @BeginPos + 4
SET @ Len = (@EndPos - @BeginPos) + 1
FIM
-- substituir qualquer
tags com uma nova linha@BeginPos SET = CHARINDEX ( `
`, @DirtyText)SET @EndPos = @BeginPos + 5
SET @ Len = (@EndPos - @BeginPos) + 1
While (@BeginPos gt; 0 E @EndPos gt; 0 E @Lengt; 0) BEGIN
SET @DirtyText = STUFF (@DirtyText, @BeginPos, @Length, `CHAR (13) + CHAR (10)`)
@BeginPos SET = CHARINDEX ( `
`, @DirtyText)SET @EndPos = @BeginPos + 5
SET @ Len = (@EndPos - @BeginPos) + 1
FIM
-- Remova qualquer coisa entre
Tag @BeginPos SET = charIndex ( `lt;`, @DirtyText)
@EndPos SET = charIndex ( `gt;`, @DirtyText, charIndex ( `lt;`, @DirtyText))
SET @ Len = (@EndPos - @BeginPos) + 1
While (@BeginPos gt; 0 E @EndPos gt; 0 E @Lengt; 0) BEGIN
SET @DirtyText = STUFF (@DirtyText, @BeginPos, @Length, ``)
@BeginPos SET = charIndex ( `lt;`, @DirtyText)
@EndPos SET = charIndex ( `gt;`, @DirtyText, charIndex ( `lt;`, @DirtyText))
SET @ Len = (@EndPos - @BeginPos) + 1
FIM
RETURN LTRIM (RTRIM (@DirtyText))
FIM
Compilar a função SQL.
Executar a função, e verificar que ele retorna os resultados desejados. Por exemplo:
Seleccione a partir dbo.CleanHTML ( `
teste`);