Inquiridor
Query SQL 2000 - Separar nome

Pergunta
-
Boa tarde, Galera
Estou com um problema facil de se resolver, mas como sou iniciantes tenho dificuldade.
Só preciso de uma query pra pegar o primeiro nome e o Ultimo por ex:
Bruno Souza Andrade na query eu preciso pegar o Bruno Andrade..
Agradeço ajuda..
Obrigado!- Tipo Alterado Gustavo Maia Aguiar terça-feira, 9 de março de 2010 16:25 É uma pergunta e não uma discussão
Todas as Respostas
-
Boa tarde Bruno, segue exemplo:
DECLARE @t TABLE (Nome Varchar(30)) INSERT @t SELECT 'MARISTELA ANTONIA DA SILVA' UNION SELECT 'SONIA MARIA DE MELLO' UNION SELECT 'JORGE CARLOS AROLDO' UNION SELECT 'CLEIDE NASCIMENTO DE MATOS' UNION SELECT 'LUIZ ANTONIO DA SILVA' UNION SELECT 'SANDRA LOPES VIEIRA' SELECT Nome, [Primeiro Nome] = SUBSTRING(Nome,1,(CHARINDEX(' ',Nome))), [Primeiro Nome e Sobrenome] = SUBSTRING(Nome,1,(CHARINDEX(' ',Nome, CHARINDEX(' ',Nome) + 1))), [Primeiro Nome e Ultimo Sobrenome] = SUBSTRING(Nome,1,CHARINDEX(' ',Nome) - 1) +RIGHT(Nome,CHARINDEX(' ',REVERSE(Nome))) FROM @t
Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino- Sugerido como Resposta Gustavo Maia Aguiar terça-feira, 9 de março de 2010 16:36
-
Boa Tarde,
Segue uma forma alternativa de retornar o que você precisa (pena que só funciona no 2005):-- Criação da tabela CREATE TABLE Nomes (Nome VARCHAR(80)) -- Inserção de registros INSERT INTO Nomes VALUES ('Bruno Souza Andrade') INSERT INTO Nomes VALUES ('Ana Paula Silveira') INSERT INTO Nomes VALUES ('Pedro Paulo Almeida') INSERT INTO Nomes VALUES ('Carlos Eduardo da Silva') INSERT INTO Nomes VALUES ('Rodrigo Diógenes Cunha Meira') INSERT INTO Nomes VALUES ('Maria') ;WITH NomesF (Nome, NomeXML) AS ( SELECT Nome, CAST('<N><n>' + REPLACE(Nome,' ','</n><n>') + '</n></N>' AS XML) FROM Nomes) SELECT Nome, CAST(NomeXML.query( 'for $nome in /N return $nome/n[1]/text()' ) AS VARCHAR(80)) As PrimeiroNome, CAST(NomeXML.query( 'for $nome in /N return $nome/n[last()]/text()' ) AS VARCHAR(80)) As SobreNome, CAST(NomeXML.query( 'for $nome in /N return concat($nome/n[1],'' '',$nome/n[last()])' ) AS VARCHAR(80)) As NomeAbreviado FROM NomesF
Maiores detalhes em:
Extraindo o nome e o sobrenome
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!219.entry
[ ]s,Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.comComo descobrir a data do último acesso a uma tabela ?
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!964.entry
Classifique as respostas. O seu feedback é imprescindível- Sugerido como Resposta Gustavo Maia Aguiar terça-feira, 9 de março de 2010 16:30
- Não Sugerido como Resposta Gustavo Maia Aguiar terça-feira, 9 de março de 2010 16:36
-
-
Bruno,
Veja este outro exemplo:
CREATE
TABLE Nomes (Nome VARCHAR(80))
2
3
INSERT INTO Nomes VALUES ('Joana Maria')
4
INSERT INTO Nomes VALUES ('Ana Paula Silveira')
5
INSERT INTO Nomes VALUES ('Pedro Paulo Almeida')
6
INSERT INTO Nomes VALUES ('Carlos Eduardo da Silva')
7
INSERT INTO Nomes VALUES ('Rodrigo Digenes Cunha Meira')
8
INSERT INTO Nomes VALUES ('Maria')
9
10
;WITH ResXML (Nome, NomeXML)
11
AS (
12
SELECT Nome, CAST('<N><n>' +
13
REPLACE(Nome,' ','</n><n>') +
14
'</n></N>' AS XML) FROM Nomes)
15
16
SELECT Nome,
17
Nomes.N.value('(./text())[1]','nvarchar(50)') As Nome
18
FROM ResXML
19
CROSS APPLY NomeXML.nodes('./N/n') As Nomes(N)
CREATE
FUNCTION dbo.SeparaNomes (@Nome VARCHAR(MAX))
2
RETURNS @T TABLE (ParteNome NVARCHAR(50))
3
AS
4
BEGIN
5
DECLARE @NomeXML XML
6
SET @NomeXML = '<N><n>' + REPLACE(@Nome,' ','</n><n>') + '</n></N>'
7
8
INSERT INTO @T
9
SELECT Nomes.N.value('(./text())[1]','nvarchar(50)') As ParteDoNome
10
FROM @NomeXML.nodes('./N/n') As Nomes(N)
11
12
RETURN
13
END
14
15
SELECT * FROM dbo.SeparaNomes ('Carlos Eduardo da Silva')
Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA