Selecionando parte de um campo varchar no banco

14/02/2017

0

Pessoal,

Gostaria da ajuda de vocês na seguinte questão. Preciso pegar uma parte apenas de um campo varchar, como no exemplo abaixo:

Tabela de origem:

NOME
JORGE LUIZ MAGALHÃES DA SILVA
ELZA APARECIDA GONÇALVES MARQUES

Resultado do select:
MAGALHÃES
GONÇALVES

Como posso fazer para pegar esse resultado?

Agradeço desde já!
Tiago Dias

Tiago Dias

Responder

Post mais votado

14/02/2017

Oi Tiago, tudo bem?

Não sei se entendi muito bem, mas vamos lá... Pelo que vi, você quer 'pegar' um dos sobrenome da pessoa certo? Nesse caso, a terceira ocorrência após o espaço certo? Como você não tem uma palavra para usar o like o único modo que eu achei de fazer é com regex, não sei se é o melhor jeito, mas talvez te ajude a ter uma ideia melhor.

Segue um exemplo ( em Oracle, mas deve ter um equivalente em SQL)

 select regexp_substr(t.name, '[^[:space:]]+', 1, 3 ), t.name
  from tabela t


Onde '[^[:space:]]+' é o pattern a ser procurado
1--> É o start da string
3--> Número da ocorrência que você quer obter,


JORGE - 1 ocorrência
LUIZ - 2 ocorrência
MAGALHÃES - 3 ocorrência
DA - 4 ocorrência
SILVA - 5 ocorrência

Aline Bianchini

Aline Bianchini
Responder

Mais Posts

24/02/2017

Tiago Dias

Oi Aline, desculpa a demora. Então no caso só desse jeito mesmo né, usando patterns para verificar o padrão que está vindo na consulta.

Vou ver como é no SQL Server e te falo como é :)

Obrigado!
Responder

09/03/2017

David Styveen

Bom dia, Aline e Tiago.

Existem as opções de CHARINDEX, LEFT, RIGHT, SUBSTRING, INVERSE.
Precisaria entender melhor a necessidade para melhor ajudá-lo como por exemplo, se existirem apenas dois nomes o que deve retornar?

Abraços
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar