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