Selecionando parte de um campo varchar no banco

SQL Server

SQL

Banco de Dados

14/02/2017

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

Curtidas 0

Melhor post

Aline Bianchini

Aline Bianchini

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
GOSTEI 4

Mais Respostas

Tiago Dias

Tiago Dias

14/02/2017

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!
GOSTEI 1
David Styveen

David Styveen

14/02/2017

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
GOSTEI 3
POSTAR