Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Ajuda Expressoes Regulares


thiago.mac

Pergunta

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

  • 0

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 SELECT

e 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

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...