thiago.mac Postado Janeiro 7, 2009 Denunciar Share Postado Janeiro 7, 2009 Boa TardeEstou precisando fazer uma consulta utilizando LIKE e tb Expressões RegularesE o seguinte, a pessoa tem a opcao de escolher um relatorio utilizando um intervalo alfabético, por exemplo todos os nomes que começam com A ate D.Tentei fazer o seguinteSELECT * FROM objeto o where o.descricao rlike '^[AA-AS]';Eu esperava o retorno de todos os objetos que comecao com AA , AB, AC ate AS. Mas acabou gerando tambem resultados que comecam com SA, SE, ...?Da uma força aehVlwObrigado Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Janeiro 8, 2009 Denunciar Share Postado Janeiro 8, 2009 Oi,'thiago.mac' !Fiz alguns testes com uma base grande que tenho aqui e sugiro o seguinte:1) para não perder performance, caso você use índice por este campo, e para procurar dados no início do campo, utilize o comando abaixo:select nome from objeto where descricao >= 'AA' and nome <= 'AD' A resposta todos os nomes entre AA e AC inclusive. Se a pesquisa for entre AA e AH a resposta cserá entre AA e AG inclusive. 2) para procurar dados em qualquer parte do campo pesquise:select nome from objeto where SUBSTRING(descricao, 2, 2) BETWEEN 'AA' and 'AD' Procurará todos os registros onde a segunda e a terceira posições do campo estiverem entre AA e AD inclusive. Neste caso, a pesquisa sempre gerará um TABLE SCAN. (Ver seção 6.3. Funções para Uso em Cláusulas SELECTe WHERE do manual do MySQL versão 4.1 - tradução em português, para maiores informações) Link para o comentário Compartilhar em outros sites More sharing options...
0 thiago.mac Postado Janeiro 9, 2009 Autor Denunciar Share Postado Janeiro 9, 2009 Vlw , problema resolvidoUtilizei a primeira opçãoSendo que utilizando WHERE between 'AS%' and 'AZ%' tb funcionou akiObrigado Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
thiago.mac
Boa Tarde
Estou precisando fazer uma consulta utilizando LIKE e tb Expressões Regulares
E o seguinte, a pessoa tem a opcao de escolher um relatorio utilizando um intervalo alfabético, por exemplo todos os nomes que começam com A ate D.
Tentei fazer o seguinte
SELECT * FROM objeto o where o.descricao rlike '^[AA-AS]';
Eu esperava o retorno de todos os objetos que comecao com AA , AB, AC ate AS. Mas acabou gerando tambem resultados que comecam com SA, SE, ...?
Da uma força aeh
Vlw
Obrigado
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados