[firebase-br] Função DIGITS(), alguma maneira de contornar sua ausencia?

Gladiston Santana gladiston em vidy.com.br
Ter Nov 8 12:39:55 -03 2016


revisão para ficar genérica:
create or alter procedure get_digits (
    str varchar (255),
    valid_digits varchar (255) = '012346789')
returns (
    result_value varchar (255))
as
declare variable nsize_of_str integer = 0;
declare variable i integer;
declare variable sonlychar char (1);
begin
  -- segundo parâmetro é opcional se for manter apenas numeros, modo de
usar:
  -- select result_value from
get_digits('(11)5555-4444/5555-33333,'0123456789/')
  -- retorna 1155554444/555533333
  result_value=null;
  nsize_of_str = octet_length(str); -- CHARACTER_LENGTH
  if ((str is not null) and (nsize_of_str > 0)) then
  begin
    result_value = '';
    i = 1;
    while (i <= nsize_of_str) do
    begin
      sOnlyChar = SUBSTRING (str FROM i FOR 1);
      if ( position (sOnlyChar in valid_digits)>0 ) then
      begin
        result_value = result_value || sOnlyChar;
      end
      i = i + 1;
    end
  end

  suspend;
end



Mais detalhes sobre a lista de discussão lista