Pessoal é o seguinte.
Tenho u mcampo em uma tabela que é do tipo vachar.
É um campo para observações, porém estamos utilizando o mesmo com o intuito de relacionar códigos com um outro sistema.
Nesse campo observação pode haver o seguinte:
1-33-566-23-230
Onde cada numero é um codigo. Queria ver se alguém possui uma função ou script pronto que localize dentro desse campo um determinado numero.
Por exemplo: Se eu pesquisar a observação com o codigo 23, ele busca a linha onde um dos codigos relacionados é o 23.
To quebrando a cabeça e não estou achando um meio de fazer isso.
Tentei com %23% por exemplo, mas ai ele me retorna o 233 também.
alguém tem uma ideia de como posso buscar isso?
Localizar numero em string
-
- Rank: Analista Sênior
- Mensagens: 164
- Registrado em: Sex, 22 Ago 2008 12:28 pm
- Localização: SP
cara v c é isso:
Att,
Diego Monteiro
select SUBSTR('34983024230892389809808',INSTR('34983024230892389809808', '23') , LENGTH('23')) from dual
Diego Monteiro
Cara, talvez seja, mas só com esse exemplo não sei dizer.
Me mostra um exemplo na swguinte estrutura então, ai posso ver.
Digamos que eu tenha a tabela x
Nessa tabela x eu tenho o campo cod e cod_relac
cod é uma sequence (1,2,3,4...)
Já cod_relac é o campo varchar onde podem existir a string (1-2-33-22-45)
Digamos que eu queira localizar a linha onde no campo cod_relac possua o numero 33.
Como seria o select?
Vlw
Me mostra um exemplo na swguinte estrutura então, ai posso ver.
Digamos que eu tenha a tabela x
Nessa tabela x eu tenho o campo cod e cod_relac
cod é uma sequence (1,2,3,4...)
Já cod_relac é o campo varchar onde podem existir a string (1-2-33-22-45)
Digamos que eu queira localizar a linha onde no campo cod_relac possua o numero 33.
Como seria o select?
Vlw
-
- Moderador
- Mensagens: 1396
- Registrado em: Sex, 01 Fev 2008 2:06 pm
- Localização: Rio de Janeiro - RJ
- Contato:

você não pode fazer isso?
select * from x where cod_relac like '%-33-%';
-
- Rank: Analista Sênior
- Mensagens: 164
- Registrado em: Sex, 22 Ago 2008 12:28 pm
- Localização: SP
Vê isso aqui então mais fácil.
Att,
Diego Monteiro
SELECT CAMPO
FROM (select '33-2-1-22-23' as campo from dual)
WHERE CAMPO LIKE '%-33-%'
OR CAMPO LIKE '%-33'
OR CAMPO LIKE '33-%'
Diego Monteiro
cara, hahahaha
Meu problema deve ser sono, to em epoca de provas e trabalhos na faculdade e mais o trab aqui que está puxado, não sei porque não consegui pensar nisso, rsrs.
Realmente muito simples, vlw velho...
Meu problema deve ser sono, to em epoca de provas e trabalhos na faculdade e mais o trab aqui que está puxado, não sei porque não consegui pensar nisso, rsrs.
Realmente muito simples, vlw velho...
-
- Rank: Estagiário Sênior
- Mensagens: 9
- Registrado em: Ter, 28 Set 2010 3:23 pm
- Localização: Serra-ES
Atc,
----------------------------------------
Marcelo Malta
Analista de Sistemas
----------------------------------------
----------------------------------------
Marcelo Malta
Analista de Sistemas
----------------------------------------
A solução é simples sim, mas não vejo muita diferença entre isso e
se tiver algum código '1-29-18-333-182-91' vai trazer também, e acho que não é isso que você quer, ele pega pela '%-33%'
Eu teria que pesquisar para te dar uma resposta correta, mas existe uma função que separa os valores por um determinado caracter, no caso o '-', tipo o Split no C# e traz uma lista de valores. Não lembro ao certo como é no Oracle, mas acho que isso te atenderia melhor.
Se alguém souber do que eu estou falando poderia ajudar também.
like '%33%'
Eu teria que pesquisar para te dar uma resposta correta, mas existe uma função que separa os valores por um determinado caracter, no caso o '-', tipo o Split no C# e traz uma lista de valores. Não lembro ao certo como é no Oracle, mas acho que isso te atenderia melhor.
Se alguém souber do que eu estou falando poderia ajudar também.
Cara, na verdade daquela forma ali não pegará um possível -333- porque o like sempre possui o traço.
Ou é %-33-% que buscara o 33 no meio da string
ou '33-% que buscará no início da mesma
ou por fim o %-33' que encontrará caso o 33 esteja ao fim.
Por ter sempre o traço junto ao 33, não há perigo de buscar um 333.
Mas vlw pela resposta.
:-o
Ou é %-33-% que buscara o 33 no meio da string
ou '33-% que buscará no início da mesma
ou por fim o %-33' que encontrará caso o 33 esteja ao fim.
Por ter sempre o traço junto ao 33, não há perigo de buscar um 333.
Mas vlw pela resposta.
:-o
-
- Moderador
- Mensagens: 1396
- Registrado em: Sex, 01 Fev 2008 2:06 pm
- Localização: Rio de Janeiro - RJ
- Contato:

-
- Rank: DBA Sênior
- Mensagens: 389
- Registrado em: Ter, 27 Jul 2010 1:34 pm
- Localização: Sapiranga - RS
- Contato:
Quem falou que programar era fácil??
Quanto mais dificil for a implementação mais valorizado seu trabalho será!
Acessem: www.gfkauer.com.br
Quanto mais dificil for a implementação mais valorizado seu trabalho será!
Acessem: www.gfkauer.com.br
Que tal isto:
Select g.*
From gfk_teste g
Where g.valor Like '%&p_busca%'
And ((instr(g.valor, &p_busca) + length(&p_busca)-1) = length(g.valor)
Or substr(g.valor, instr(g.valor, &p_busca) + length(&p_busca), 1) = &separador);
O problema do codigo do diego é se existir somente o numero 33 no campo (sem traços antes nem depois), ele não será retornado.
Acho que a solução mais simples é usar expressões regulares:
Acho que a solução mais simples é usar expressões regulares:
select * from tabela
where regexp_like(coluna, '(^|-)33($|-)');
-
- Rank: Estagiário Sênior
- Mensagens: 9
- Registrado em: Ter, 28 Set 2010 3:23 pm
- Localização: Serra-ES
Atc,
----------------------------------------
Marcelo Malta
Analista de Sistemas
----------------------------------------
----------------------------------------
Marcelo Malta
Analista de Sistemas
----------------------------------------
Realmente eu comi mosca. A sua solução atende bem mesmo, com exceção ao caso de somente ter o número 33 no campo.
Entretanto já colocaram solução para isso.
Entretanto já colocaram solução para isso.
Opa não havia mais voltado ao tópico por já ter solucionado o problema.O problema do codigo do diego é se existir somente o numero 33 no campo (sem traços antes nem depois), ele não será retornado.
Acho que a solução mais simples é usar expressões regulares:
Mas realmente se for somente o 33 aquele código não buscava.
Mas aí eu simplesmente adicionei mais um OR
...
OR campo LIKE '33'
Obrigado a todos pela ajuda.
Vlw.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante