Re: [firebase-br] Função "Copy" no Firebird

Mr.Mothman mr.mothman em gmail.com
Seg Out 10 09:42:01 -03 2005


Caros Rainniery / Marcelo,

  Rainniery: Na realidade a sintaxe correta da função externa SUBSTR é
a seguinte:

  SUBSTR (<expressão>, <inicio>, <tamanho>)

  onde:

  <expressão> é um dado shortstring (string curto, de comprimento 1
até 255 bytes);
  <inicio> é um smallint (inteiro pequeno, de 1 até 255);
  <tamanho> é um smallint (inteiro pequeno, de 1 até 255)

  Portanto, para funcionar o seu exemplo, o correto seria fazer:

  ... SUBSTRING ('FLAMENGO', 4, 5) ...

  Beleza?

  Marcelo: até onde eu saiba, é só com UDF mesmo...

  Na FBUDF, existe uma função chamada SRIGHT, que faz isso.

  Sua sintaxe é:

  SRIGHT (<expressão>, <tamanho>)

  onde:

  <expressão> é um dado varchar (100); e
  <tamanho> é um smallint (inteiro pequeno, de 1 até 100).

  O dado retornado é um Varchar de 100 bytes.

  Exemplo:

  SELECT SRIGHT ('O TIMAO É O CORINTHIANS', 11) from RDB$DATABASE;

  Retornaria o time que, como todo mundo sabe, vai ganhar o
Brasileirão (hehehe, desculpe o off neste ponto, mas não podia perder
o gancho...).

  Duas observações:

  1) RDB$DATABASE seria, no FireBird, o equivalente à tabela DUAL do Oracle;
  2) Você poderia perguntar: se existe uma funcão SRIGHT, porque não
existe uma função SLEFT? Aí eu te respondo: porque seria redundante...
Concorda que, sabendo o tamanho que você quer da esquerda para a
direita você poderia utilizar a função SUBSTR, de 1 até o tamanho que
você precisa? Então...

  Espero ter podido ajudar.

  [ ]'s a todos.

  Mr.Mothman




Mais detalhes sobre a lista de discussão lista