ops$marcio:YODA10G> create table t ( x varchar2(15) );

Table created.

ops$marcio:YODA10G>
ops$marcio:YODA10G> insert into t values ( 'XXX9999YYY' );

1 row created.

ops$marcio:YODA10G> insert into t values ( 'XX9999999YY' );

1 row created.

ops$marcio:YODA10G> insert into t values ( 'XXXX99' );

1 row created.

ops$marcio:YODA10G>
ops$marcio:YODA10G> select x,
  2         instr(n, '9' ) prm,
  3         instr(n, '9', -1) ult
  4    from (
  5  select translate(x,'1234567890','9999999999') n, x
  6    from t
  7  )
  8  /

X                         PRM           ULT
--------------- ------------- -------------
XXX9999YYY                  4             7
XX9999999YY                 3             9
XXXX99                      5             6

3 rows selected.

ops$marcio:YODA10G>
ops$marcio:YODA10G> select x
  2       , substr(x, 1, instr(n,'9')-1 ) prefixo
  3       , substr(x, instr(n,'9'), (instr(n,'9', -1)+1) - instr(n,'9'))
medida
  4       , substr(x, instr(n,'9', -1)+1 ) sulfixo
  5    from ( select x, translate(x,'1234567890','9999999999') n from t )
  6  /

X               PREFIXO         MEDIDA          SULFIXO
--------------- --------------- --------------- ---------------
XXX9999YYY      XXX             9999            YYY
XX9999999YY     XX              9999999         YY
XXXX99          XXXX            99

3 rows selected.

ops$marcio:YODA10G> insert into t values ( 'ab1234567vc');

1 row created.

ops$marcio:YODA10G> insert into t values ( 'mn0z');

1 row created.

ops$marcio:YODA10G> insert into t values ( 'ooo123');

1 row created.

ops$marcio:YODA10G> select x
  2       , substr(x, 1, instr(n,'9')-1 ) prefixo
  3       , substr(x, instr(n,'9'), (instr(n,'9', -1)+1) - instr(n,'9'))
medida
  4       , substr(x, instr(n,'9', -1)+1 ) sulfixo
  5    from ( select x, translate(x,'1234567890','9999999999') n from t )
  6  /

X               PREFIXO         MEDIDA          SULFIXO
--------------- --------------- --------------- ---------------
XXX9999YYY      XXX             9999            YYY
XX9999999YY     XX              9999999         YY
XXXX99          XXXX            99
ab1234567vc     ab              1234567         vc
mn0z            mn              0               z
ooo123          ooo             123

6 rows selected.

ops$marcio:YODA10G>

On 10/2/06, Emerson Sanches <[EMAIL PROTECTED]> wrote:
>
> Bom dia pessoal da lista.
> Gostaria de saber com criar uma funcao que faca o seguinte:
>
> separe um codigo em prefixo, medida e sulfixo.
>
> os codigos podem ter o seginte formato
>
>
> XXX9999YYY
> XX9999999YY
> XXXX99
>
> sedo que:
> X é o prefixo e eh sempre um conjunto de caracteres
> 9 é a medida e eh sempre numerico
> Y é o sulfixo, sempre caracteres, podendo existir ou nao.
>
> o tamanho de cada cadeia de caracteres pode variar, ex:
>
> XXXX; XXX; XX; XXXXX
> 999; 9999; 99999
> YY; YYY; YYYYYY ou sem caracter.
>
>
> Obrigado pela atencao,
>
>
> Emerson Sanches
> Analista Programador
> Metalurgica Suprens Ltda
> [EMAIL PROTECTED]
> [EMAIL PROTECTED]
>
>
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> 
>



-- 
Marcio Portes
Material Tecnico em Portugues - http://mportes.blogspot.com
Practical Learning Oracle     -
http://mportes.blogspot.com/2006/02/practical-learning-oracle.html


[As partes desta mensagem que não continham texto foram removidas]



--------------------------------------------------------------------------------------------------------------------------
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--------------------------------------------------------------------------------------------------------------------------__________________________________________________________________

OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: 
http://www.oraclebr.com.br/
__________________________________________________________________
Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine  
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/oracle_br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 



Responder a