DICAS

Visite a biblioteca de dicas da comunidade.

Saiba mais

ARTIGOS

Abordagens detalhadas sobre assuntos diversos.

Saiba mais

INICIANTES

Aprenda a programar de um modo simples e fácil.

Saiba mais

DOWNLOADS

Acesse os materiais exclusivos aos membros.

Saiba mais
voltar

PARA QUEM GOSTA DE DELPHI

Como transformar um campo blob em linhas de string (varchar) no SQL Firebird?

Olá pessoal.

Em alguns casos temos nos bancos de dados campos do tipo BLOB para armazenar textos.

Há ocasiões que é importante recuperar linha a linha deste BLOB que atua como
um StringList ou Memo.

Legal, mas como fazer?

Para ajudar, criamos um procedimento que converte um BLOB de texto puro (multi linhas)
em linhas individuais.

Vamos ao código!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
CREATE OR ALTER PROCEDURE UTIL_SPLIT_BLOB_TO_ROW (
    BLOBTEXT VARCHAR(1000))
RETURNS (
    MNUMBER INTEGER,
    RETSTRING VARCHAR(1000))
AS
DECLARE variable LSTRING VARCHAR(1000);
DECLARE variable POS1 INTEGER;
DECLARE variable POS2 INTEGER;
DECLARE variable INTLEN INTEGER;
BEGIN
  lstring = SUBSTRING( BLOBTEXT FROM 1 FOR 1000);
 
  pos1 = 1;
  intlen = CHAR_LENGTH(lstring);
  MNUMBER = 0;
 
  while (pos1 < intlen) do
  BEGIN
    MNUMBER = MNUMBER + 1;
    pos2 = POSITION (ASCII_CHAR(13) IN SUBSTRING(lstring FROM pos1));
 
    IF (pos2 = 0) THEN
    BEGIN
      pos2 = intlen;
    END
 
    retstring = SUBSTRING (lstring FROM pos1 FOR (pos2 - 1));
    pos1 = pos2 + pos1;
 
    suspend;
  END
END

No procedimento estamos usando varchar(1000) de paramêtros, mas isso pode ser adaptado a sua realidade.

Agora vamos ao exemplo de uso:

1
2
3
4
SELECT
U.MNUMBER,
U.RETSTRING
FROM UTIL_SPLIT_BLOB_TO_ROW(:texto) U

Ao informar no parâmetro como exemplo:
SHOW DELPHI
MELHOR COMUNIDADE DE DELPHI DO BRASIL

o retorno será

MNUMBER RETSTRING
1 SHOW DELPHI
2 MELHOR COMUNIDADE DE DELPHI DO BRASIL

Conclusão, com um simples procedimento é possível transformar um campo texto de várias linhas
em linhas de retorno de um SQL.

Espero que seja útil a todos! Um abraço e até o próximo post.

Dúvidas ou sugestões? Deixe o seu comentário!

Fonte de referência: https://www.experts-exchange.com/questions/23958854/How-to-split-blob-field-into-rows.html

Facebook Comments Box
  • Giovani Da Cruz
  • 6.528 views
  • 0 comentários
  • 25 de julho de 2019

Está gostando do conteúdo? Considere pagar um cafezinho para nossa equipe!

Deixe um comentário

Ir ao topo

© 2024 Infus Soluções em Tecnologia - Todos os Direitos Reservados