none
Performance em consulta com filtro utilizando function que remove caracteres de texto RRS feed

  • Pergunta

  • Olá pessoal,
    Foi criada uma function no SQL Server para remover as tags HTML de um campo de texto. Há pesquisas com LIKE %% sob esse campo e estava trazendo conteúdo das tags HTML, por isso precisamos criar a function.
    Porém, após inclur a function e utiliza-la na pesquisa, a consulta ficou muito demorada, inviável utilizar.


    Não temos conhecimento sobre pesquisa em texto, índices de texto completo, etc.

    Alguma sugestão, ou caminho que possamos tomar?

    Segue abaixo a function

    CREATE FUNCTION [dbo].[udf_StripHTML] (@HTMLText varchar(max))
    RETURNS varchar(max)
    AS
    BEGIN
      DECLARE @Start int
      DECLARE @End int
      DECLARE @Length int
      SET @Start = CHARINDEX('<', @HTMLText)
      SET @End =
      CHARINDEX('>', @HTMLText, CHARINDEX('<', @HTMLText))
      SET @Length = (@End - @Start) + 1
      WHILE @Start > 0
        AND @End > 0
        AND @Length > 0
      BEGIN
        SET @HTMLText = STUFF(@HTMLText, @Start, @Length, '')
        SET @Start = CHARINDEX('<', @HTMLText)
        SET @End = CHARINDEX('>', @HTMLText, CHARINDEX('<', @HTMLText))
        SET @Length = (@End - @Start) + 1
      END
      RETURN LTRIM(RTRIM(@HTMLText))
    END


    Julio C.

    sexta-feira, 7 de fevereiro de 2020 11:25

Respostas

Todas as Respostas

  • Deleted
    sexta-feira, 7 de fevereiro de 2020 11:44
  • Vamos dar uma olhada.

    Quanto ao BD estar conforme as regras do documento XML, isso é um problema. Não temos como garantir isso, mas talvez seja uma boa opção, podemos analisar a possibilidade de trabalhar os textos para que fique correto.

    Qualquer tag HTML pode ser utilizada, ou ao menos, não é controlado atualmente (também pode ser pensado em limitar se for o caso, para resolver isso). Como ficou inviável a consulta, a abordagem talvez não fuja de pensar em algo mais abrangente.

    Vamos tentar essa inline table-valued.

    Obrigado!


    Julio C.



    • Editado Julio Costi sexta-feira, 7 de fevereiro de 2020 13:43
    sexta-feira, 7 de fevereiro de 2020 12:14
  • Deleted
    sexta-feira, 7 de fevereiro de 2020 12:28
  • Deleted
    sexta-feira, 7 de fevereiro de 2020 14:32
  • Sim, foi pensada nessa hipótese de ter outro campo de texto sem as tags, caso não tenha outro jeito que fique viável.

    Porém, manter no BD uma segunda coluna de texto (que é um texto grande), não seria o ideal, pensando também que não é apenas este caso, haverão outros (por isso o interesse de tentarmos todas formas possíveis).

    Desde já, muito obrigado pela ajuda.


    Julio C.

    sexta-feira, 7 de fevereiro de 2020 15:09
  • Deleted
    • Marcado como Resposta Julio Costi terça-feira, 3 de março de 2020 12:47
    segunda-feira, 10 de fevereiro de 2020 22:03
  • Deleted
    • Marcado como Resposta Julio Costi terça-feira, 3 de março de 2020 12:48
    terça-feira, 11 de fevereiro de 2020 17:26
  • Ola, José, muito obrigado pelas respostas.

    Desculpe a demora em retornar.

    Vou testar essas hipóteses.


    Julio C.

    terça-feira, 3 de março de 2020 12:48