Fórum funcoes Pos, lenght no Firebird #52804
15/09/2005
0
Ex.: 1;5;10;20;
se eu executar um select neste campo o valor retornado será 1; 5; 10; 20
mas o que preciso na verdade é que seja retornado:
1
5
10
20
Pensei em criar uma stored procedure do tipo:
Select Campo from Tabela into :sCampo; while pos(´;´, sCampo) > 0 do begin Campo_Saida = substring(scampo, 1, pos(´;´, sCampo)); sCampo = substring(scampo, pos(´;´, sCampo), lenght(scampo)); suspend; end;
Alguem teria alguma idéia de como fazer?
[color=green:a13c332297]Movido de Delphi para Interbase/Firebird[/color:a13c332297]
Steve_narancic
Curtir tópico
+ 0Post mais votado
15/09/2005
CREATE PROCEDURE RESULTADO RETURNS ( TEXTORET VARCHAR(10)) AS DECLARE VARIABLE LETRA CHAR(1); DECLARE VARIABLE TEXTO VARCHAR(10); begin /* Procedure Text */ select first 1 campo from teste into :texto; textoret = ´´; while (texto <> ´´) do begin letra = substring(texto from 1 for 1); if (Letra<>´;´) then begin textoret = textoret || Letra; texto = substring(texto from 2 for 50); end else begin suspend; texto = substring(texto from 2 for 50); textoret = ´´; end end end
Emerson Nascimento
Gostei + 1
Mais Posts
15/09/2005
Steve_narancic
Gostei + 0
21/09/2005
Yallebr
Concatenar várias linhas em uma única linha? Apenas no SQL, sem Stored Procedure.
Obrigado.
Yalle
Gostei + 0
22/09/2005
Emerson Nascimento
Gostei + 0
22/09/2005
Bruno Belchior
Gostei + 0
22/09/2005
Gandalf.nho
Não, vc terá que usar UDF. (A que acompanha o IB/FB tem essas funções)
Gostei + 0
22/09/2005
Bruno Belchior
Gostei + 0
23/09/2005
Gandalf.nho
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)