Pular para o conteúdo
Visualizando 5 posts - 1 até 5 (de 5 do total)
  • Autor
    Posts
  • #77211
    Anônimo

      Ola
      preciso selecionar todos os registros que comecem com 100 ate 200
      ou seja

      Numero da conta
      1005550
      1005551
      1005552
      2001001
      2001002

      os menores que 100 nao devem ser selecionados e os maiors que 200 tambem nao deve ser selecionados.
      nao sei se fui claro

      Nesse meu select so tem um like comecando com 100 como fica os 200 nao sei como fica com os 200.?

      Poderiam me ajudar com esse like ?

      Grato

      select acct_num “Numero da Conta”,ac.primary_name “Primary Name” from account_form ac, naop_country_hist ch
      where ac.country = ch.country_code(+)
      and ac.acct_num like ‘100%’
      order by ac.acct_num

      #77216
      Anônimo

        tenta assim:
        select acct_num “Numero da Conta”
        ,ac.primary_name “Primary Name”
        from account_form ac, naop_country_hist ch
        where ac.country = ch.country_code(+)
        and substr(ac.acct_num,1,3) >= 100
        and substr(ac.acct_num,1,3) <= 200
        order by ac.acct_num

        #77218
        Marcio68Almeida
        Participante

          Bom…
          Se você tem um código numérico, então pode haver um problema, se o teu código tiver seis dígitos ao inves de sete e os três primeiros coeçam com 100, ele vai ser selecionado, mas não sei se é o que você quer…
          Você pode usar o between no exemplo fornecido pelo nosso colega, caso seja tipo caracter. Se for do tipo numérico, use between 1000000 and 1999999.
          Lembrando que, quando você usa funções como substring, to_date, to_char, etc, você “mata” o índice e ele fará um full scan na tabela, portanto, dependendo do tamanho de sua tabela, esse é outro item a ser verificado.

          #77243
          drumond
          Participante

            Vc poderia fazer assim tambem,
            select acct_num “Numero da Conta”,ac.primary_name “Primary Name” from account_form ac, naop_country_hist ch
            where ac.country = ch.country_code(+)
            and (ac.acct_num like ‘100%’ or ac.acct_num like ‘200%’)
            order by ac.acct_num

            Particularmente, tendo em mente que este tipo de consulta ira degradar a performace da aplicacao e do banco, conforme lembrou o Marcio, a melhor relacao custoxbeneficio eh usar o comando between ! 🙂

            #77351
            chduarte
            Participante

              Se for a versao Enterprise, crie um function based index nesta query se sua tabela for muito grande.
              Ira ajudar na performance.

              Grande []

            Visualizando 5 posts - 1 até 5 (de 5 do total)
            • Você deve fazer login para responder a este tópico.
            plugins premium WordPress