Pular para o conteúdo
  • Este tópico contém 10 respostas, 5 vozes e foi atualizado pela última vez 9 anos atrás por Avatar de rmanrman.
Visualizando 11 posts - 1 até 11 (de 11 do total)
  • Autor
    Posts
  • #98978
    Avatar de leo_jfleo_jf
    Participante

      Pessoall,

      Preciso buscar em uma coluna de nome quem tem nomes abreviados. Exemplo: Leonardo n. Ou Leonardo N.
      Alguem teria uma sugestao?

      #98979
      Avatar de leo_jfleo_jf
      Participante

        Retificando:

        Leonardo N. Souza ou Leonardo N Souza.
        Se tiver apenas um caracter após o nome também tenho que buscar.

        #98980
        Avatar de IshiiIshii
        Participante

          Olá,

          Se for Oracle 10g ou superior você poderia usar as expressões regulares:

          select * from tabela
          where regexp_like (coluna_nome,'^[[:alpha:]]([[:space:]]{1})[[:alpha:]]')
          or regexp_like (coluna_nome,'^[[:alpha:]]([[:punct:]]{1})[[:alpha:]]')

          Essa query traria os nomes abreviados ou com uma letra, por exemplo José da Silva E Castro retornaria mas por causa do E que ele entenderia como abreviação…

          Mas acho que isso já serviria para iniciar…

          []s Ishii

          #98984
          Avatar de leo_jfleo_jf
          Participante

            Olas Ishii,

            seria exatamente isso que preciso, mas o oracle aqui, infelizmente, ainda é o 9i…

            #98986
            Avatar de leo_jfleo_jf
            Participante

              Ishii,
              Instalei localmente o oracle 10g, e fiz o teste com a query abaixo, mas não funcionou.
              Sabe dizer se falta alguma informação na query?

              #98989
              Avatar de burgaburga
              Participante

                Tomando a liberdade de modificar o código do Ishii, tente desta forma:

                select * from tabela
                where regexp_like (coluna_nome,'(^|[[:space:]]|[[:punct:]])([[:alpha:]]{1})([[:space:]]|[[:punct:]]|$)');

                #98992
                Avatar de leo_jfleo_jf
                Participante

                  Burga,

                  Funcionou perfeito.

                  Vou analisar o código do Ishii e ver o que difere, e depois posto.
                  Muito obrigado a todos pela ajuda.

                  Infelizmente aqui é oracle 9i, mas pelo que vejo o 10g tem vários recursos interessantes, e práticos.

                  #98997
                  Avatar de burgaburga
                  Participante

                    Pro 9i, uma solução super tosca mas que funciona é fazer algo do tipo:

                    WITH t AS (
                    SELECT
                    TRANSLATE(UPPER(nome),'BCDEFGHIJKLMNOPQRSTUVXZWY.',
                    'AAAAAAAAAAAAAAAAAAAAAAAAA ')
                    teste,
                    id,
                    nome
                    FROM tabela)
                    SELECT * FROM t
                    WHERE teste like 'A %'
                    OR teste like '% A'
                    OR teste like '% A %';

                    Substituir todos os caracteres por um só, e todos os tipos de pontos por espaço e buscar pelo caractere isolado, bom só pra poupar um pouco de código e se for executada uma única vez… Pelo menos poupa de ficar escrevendo intermináveis OR LIKE OR LIKE OR LIKE…

                    #98998
                    Avatar de leo_jfleo_jf
                    Participante

                      Fala Burga, blz?

                      A solução com regexp_like funcionou perfeitamente, mas amanha vou testar com o like.
                      Obrigado pela ajuda.

                      #107911
                      Avatar de FELIPE SILVAFELIPE SILVA
                      Participante

                        a

                        #107918
                        Avatar de rmanrman
                        Participante

                          @FELIPE SILVA

                          Pode ser feito assim:


                          ...
                          WHERE TESTE LIKE '%000777793%'
                          OR TESTE LIKE '%0000555530%'
                          OR TESTE LIKE %000444439%'

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