Usuário com melhor resposta
Separar ultimo sobrenome.

Pergunta
-
Boa tarde,
Preciso de um help dos amigos!
Tenho uma tabela chamada CADASTRO e nela tem um campo chamado NOME.
No campo nome, tenho o cadastro no nome completo da pessoa. Ela pode ter 3, 4, 5, e até 6 nomes.
O que preciso é separar somente o ultimo nome dos restantes. Alguém pode ajudar?
Desde já agradeço
Respostas
-
Desculpe.. nao vi que voce queria uma soluçao dentro do SQL.. aqui esta a query:
select reverse(substring(reverse(a),1, charindex(' ', reverse(a)) -1)) as LastWord from ( select 'Pedro de Alcântara João Carlos Leopoldo Salvador Bibiano Francisco Xavier de Paula Leocádio Miguel Gabriel Rafael Gonzaga' as a union all select 'Pedro de Alcantara Francisco António João Carlos Xavier de Paula Miguel Rafael Joaquim José Gonzaga Pascoal Cipriano Serafim de Bragança e Bourbon' ) as tbl
att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Marcado como Resposta Marcos SJ sexta-feira, 30 de outubro de 2015 17:51
-
Daniel,
Veja se isso te resolve... Mas atente-se para o aviso do William..
DECLARE @Nome varchar(50) = 'Logan Destefani Merazzi' select @nome = reverse(@Nome) select reverse(substring(@Nome,1,charindex(' ',@nome,1)-1))
[]'s!
/* Logan Destefani Merazzi - DBA | @LoganMerazzi | http://www.merazzi.eti.br
Se a resposta for útil, vote nela. Se resolveu, marque-a como resposta. */ -
Boa tarde,
Daniel, segue mais uma sugestão para teste:
declare @Nome varchar(100) = 'Daniel Iniciante SQL'; select RIGHT(@Nome, CHARINDEX(' ', REVERSE(@Nome)) - 1)
Espero que seja útil.
Assinatura: http://www.imoveisemexposicao.com.br
Todas as Respostas
-
Cuidado! Podem existir exceçoes. Por exemplo, se o fulano se chama Pedro de Alcantara Junior ou André da Silva Filho, ou André da Silva Neto, os sobrenomes nestes casos nao sao Junior, Filho e Neto..
Ou voce cria uma logica bem fechada para excluir as excessoes ou voce separa no seu formulario Nome de Sobrenome.
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Editado William John Adam Trindade sexta-feira, 30 de outubro de 2015 14:40
-
Obrigado pela lembrança, William!
Primeiro quero fazer essa separação simples, sem fazer essa identificação... em um segundo momento irei para este passo.
Já fiz algo parecido utilizando o PATINDEX, só que neste caso eu gostaria de saber o primeiro nome.
Se houvesse uma forma de realizar um "PATINDEX de trás pra frente" eu conseguiria, mas não tenho este conhecimento.
Desde já agradeço o auxílio.
-
Para isso use essa instruçao:
string nomeCompleto="Pedro de Alcântara João Carlos Leopoldo Salvador Bibiano Francisco Xavier de Paula Leocádio Miguel Gabriel Rafael Gonzaga"; string ultimoSobrenome= nomeCompleto.Split(' ').Last();
Isso vai funcionar se voce usar espaços para separar os nomes
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
-
Desculpe.. nao vi que voce queria uma soluçao dentro do SQL.. aqui esta a query:
select reverse(substring(reverse(a),1, charindex(' ', reverse(a)) -1)) as LastWord from ( select 'Pedro de Alcântara João Carlos Leopoldo Salvador Bibiano Francisco Xavier de Paula Leocádio Miguel Gabriel Rafael Gonzaga' as a union all select 'Pedro de Alcantara Francisco António João Carlos Xavier de Paula Miguel Rafael Joaquim José Gonzaga Pascoal Cipriano Serafim de Bragança e Bourbon' ) as tbl
att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Marcado como Resposta Marcos SJ sexta-feira, 30 de outubro de 2015 17:51
-
Daniel,
Veja se isso te resolve... Mas atente-se para o aviso do William..
DECLARE @Nome varchar(50) = 'Logan Destefani Merazzi' select @nome = reverse(@Nome) select reverse(substring(@Nome,1,charindex(' ',@nome,1)-1))
[]'s!
/* Logan Destefani Merazzi - DBA | @LoganMerazzi | http://www.merazzi.eti.br
Se a resposta for útil, vote nela. Se resolveu, marque-a como resposta. */ -
Boa tarde,
Daniel, segue mais uma sugestão para teste:
declare @Nome varchar(100) = 'Daniel Iniciante SQL'; select RIGHT(@Nome, CHARINDEX(' ', REVERSE(@Nome)) - 1)
Espero que seja útil.
Assinatura: http://www.imoveisemexposicao.com.br