Ops, errei no copy/paste :) Eis o correto: O terceiro parâmetro da INSTR é a o número da ocorrência que deve ser procurada pela função:
select instr( 'ababab', 'a', 1, 1 ) posicao_do_primeiro_a from dual; POSICAO_DO_PRIMEIRO_A --------------------- 1 select instr( 'ababab', 'a', 1, 3 ) posicao_do_terceiro_a from dual; POSICAO_DO_TERCEIRO_A -------------------- 5 Étore Schiavini [email protected] 51 8116.4858 From: [email protected] [mailto:[email protected]] On Behalf Of Étore Schiavini Sent: quinta-feira, 4 de agosto de 2011 23:33 To: [email protected] Subject: RE: RES: [oracle_br] [Of] - Ajuda em Consulta SQL O terceiro parâmetro da INSTR é a o número da ocorrência que deve ser procurada pela função: select instr( 'ababab', 'a', 1, 1 ) posicao_do_primeiro_a from dual; POSICAO_DO_PRIMEIRO_A --------------------- 1 select instr( 'ababab', 'a', 1, 3 ) posicao_do_terceiro_a from dual; POSICAO_DO_SEGUNDO_A -------------------- 5 Étore Schiavini [email protected] From: [email protected] [mailto:[email protected]] On Behalf Of [email protected] Sent: quinta-feira, 4 de agosto de 2011 18:36 To: [email protected] Subject: Re: RES: [oracle_br] [Of] - Ajuda em Consulta SQL Jean boa tarde, A função INSTR me retorna a posição do primeiro caracter '#', ok funciona em partes, abaixo maiores explicações: Para o Campo 1# acho a posição do Caracter ' # ' (INSTR(AIA.description, '#') e com o comando LPAD (esquerda ou LEFT ) pegos os dados da coluna Descricao, até a posição do INSTR - 1, que me resulta no Campo 1#, ok funciona perfeito. Abaixo a função na pratica: LPAD(AIA.DESCRIPTION, (INSTR(AIA.description, '#')-1) ) As "Campo 1#", Para o Campo 2# ao invés do INSTR - 1 faço o resultado do INSTR + 1, que vai resultar na primeira Casa depois da posição primeiro Caracter ' # ' . Em parte funciona, desde que exista espaço entre o primeiro e segundo Caracter ' # ', veja a seguir: Abaixo a função na pratica: SUBSTR(AIA.DESCRIPTION, INSTR(AIA.description, '#')+1, 2) As "Campo 2#", Porem, a partir do 03 caracter a coisa muda, como encontrar a terceira vez que aparece o caracter "#" e quantas casas decimais terei que contar já que as casas decimais entre os caracters ' # ' podem ser nulas ou varias ? Mais uma vez obrigado Weslley Castilho Payables CSAV Group East Coast South America Phone: + 55 47 2103-8100 Direct 8144 Antes de imprimir, pense em sua responsabilidade e compromisso com a preservação do meio ambiente. From: jean antunes <[email protected]> To: "[email protected]" <[email protected]> Date: 08/04/2011 04:46 PM Subject: Re: RES: [oracle_br] [Of] - Ajuda em Consulta SQL Sent by: [email protected] Você poderia utilizar a função "instr" para identificar a posição do seu separador e a função "substr" para fazer o split. Jean Carlos Antunes Consultor Oracle EBS +55 41 98744631 +55 19 32290828begin_of_the_skype_highlighting +55 19 32290828 end_of_the_skype_highlighting De: Milton Bastos Henriquis Junior <[email protected]> Para: "[email protected]" <[email protected]> Enviadas: Quinta-feira, 4 de Agosto de 2011 16:11 Assunto: RES: [oracle_br] [Of] - Ajuda em Consulta SQL Ele quer exatamente o contrário do que vc sugeriu.... Os dados dele já estão todos numa coluna, e ele quer destrinchar essa coluna para várias. -- Milton Bastos http://miltonbastos.com De: [email protected] [mailto:[email protected]] Em nome de Jefferson Silva Enviada em: quinta-feira, 4 de agosto de 2011 15:59 Para: [email protected] Assunto: Re: [oracle_br] [Of] - Ajuda em Consulta SQL Vc pode usar o pipe para fazer a concatenação: campo1|| ' # ' ||campo2|| ' # ' ||campo3 Isso exibirá uma coluna somente com os valores dos campos unidos. É isso oq vc deseja? Senão explique novamente. Abraços ________________________________ De: "[email protected]< mailto:weslley.castilho%40csavgroup.com>" <[email protected]< mailto:weslley.castilho%40csavgroup.com>> Para: [email protected]<mailto:oracle_br%40yahoogrupos.com.br> Enviadas: Quinta-feira, 4 de Agosto de 2011 13:31 Assunto: [oracle_br] [Of] - Ajuda em Consulta SQL Pessoal boa tarde, Tenho o Campo (descricao) e em uma consulta (SELECT SQL) gostaria de obter vários campos separados pelo delimitador ' # ', existe uma função que faça isso? Alguém sugere algo ? Descricao BRNG0022#6A#1B#5C#2D#2820#Force matched due#$RADESH BRNG0022#6A##C#2D#28219#Force matched due#$RANA. Resultado Campo 1# Campo 2# Campo 3# Campo 4# Campo 5# Campo 6# Campo 7# Campo 8# BRNG0022 6A 1B 5C 2D 2820 Force matched due RADESH BRNG0022 6A C 2D 28219 Force matched due RANA. Desde já agradeço Weslley Castilho Payables CSAV Group East Coast South America Phone: + 55 47 2103-8100 Direct 8144 Antes de imprimir, pense em sua responsabilidade e compromisso com a preservação do meio ambiente. [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] Clique aqui<https://www.mailcontrol.com/sr/wQw0zmjPoHdJTZGyOCrrhg==> para reportar este e-mail como SPAM. This message has been scanned for malware by Websense. www.websense.com [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
