funcoes Pos, lenght no Firebird
Tenho um campo onde estão gravados alguns numeros separados por ´;´
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:
Alguem teria alguma idéia de como fazer?
[color=green:a13c332297]Movido de Delphi para Interbase/Firebird[/color:a13c332297]
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
Curtidas 0
Melhor post
Emerson Nascimento
15/09/2005
adapte à sua necessidade:
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
GOSTEI 1
Mais Respostas
Steve_narancic
15/09/2005
era exatamente o que eu precisava, valeu!
GOSTEI 0
Yallebr
15/09/2005
Pessoal e como fazer o inverso.
Concatenar várias linhas em uma única linha? Apenas no SQL, sem Stored Procedure.
Obrigado.
Yalle
Concatenar várias linhas em uma única linha? Apenas no SQL, sem Stored Procedure.
Obrigado.
Yalle
GOSTEI 0
Emerson Nascimento
15/09/2005
se não usar stored procedure você terá de fazer vários subselects ou joins.
GOSTEI 0
Bruno Belchior
15/09/2005
e a função [b:5ab08c9888]Pos[/b:5ab08c9888] e [b:5ab08c9888]Length[/b:5ab08c9888], existem nativas :?:
GOSTEI 0
Gandalf.nho
15/09/2005
[quote:a475ed8313=´Bruno Belchior´]e a função [b:a475ed8313]Pos[/b:a475ed8313] e [b:a475ed8313]Length[/b:a475ed8313], existem nativas :?:[/quote:a475ed8313]
Não, vc terá que usar UDF. (A que acompanha o IB/FB tem essas funções)
Não, vc terá que usar UDF. (A que acompanha o IB/FB tem essas funções)
GOSTEI 0
Bruno Belchior
15/09/2005
qual o nome dela??? ela já vem instalada?
GOSTEI 0
Gandalf.nho
15/09/2005
É ib_udf.dll e já vem com o banco.
GOSTEI 0