Usuário com melhor resposta
Dividir dados da mesma célula

Pergunta
-
Boa tarde, tenho uma duvida;
Na tabela "USERS" tenho o registo de todos os nomes completos na coluna "NOME",
Cada célula tem o nome completo, e pretendo em uma Coluna a célula "PrimeiroNome" o nome e em outra Coluna a célula com o "UltimoNome"
Obrigado
- Editado André Trigo quarta-feira, 3 de outubro de 2018 14:25
Respostas
Todas as Respostas
-
Deleted
- Sugerido como Resposta Junior Galvão - MVPMVP quinta-feira, 4 de outubro de 2018 12:03
-
-
Tenho nomes que é:
André Simões
e
André Trigo Simões
e eu so quero que apareça o primeiro e ultimo.
o que me enviou mostra o resultado 1 segundo e depois da erro:
"Msg 537, Level 16, State 2, Line 1
Invalid length parameter passed to the LEFT or SUBSTRING function."
Mas de repente deu para ver que mostra na primeira colina o primeiro nome e na segunda todos os outros, 2 ou 3 ou 4 nomes
-
Deleted
- Sugerido como Resposta Junior Galvão - MVPMVP quinta-feira, 4 de outubro de 2018 12:05
-
-
-
SELECT left(RTRIM(NOME), charindex(' ', RTRIM(NOME)) -1) as PrimeiroNome,
right(RTRIM(NOME), charindex(' ', reverse(RTRIM(NOME))) -1) as UltimoNome
FROM[USERS];A query acima deu-me resultado positivo mas no final volta a dar erro:
"Msg 537, Level 16, State 2, Line 26
Invalid length parameter passed to the LEFT or SUBSTRING function." -
-
O "--CODIGO #2 v2 " está 100% correto!!!
Era mesmo isso que precisava, Muito Obrigado ;)
Cumprimentos
- Editado André Trigo quinta-feira, 4 de outubro de 2018 08:27
-
André,
Somente como informação nas versões mais novas do SQL Server 2016 e 2017 temos novas funções para se trabalhar com dados strings que podem ajudar, dentre elas destaco a String_Split()
-- Exemplo 1 – Separando de forma simples uma string – SELECT * FROM STRING_SPLIT('Junior,Galvão,MVP,SQL Server',',') Go -- Exemplo 2 – Fazendo uso de variáveis como parâmetros de entrada de valores – DECLARE @string VARCHAR(100) = 'Microsoft,SQL Server,2016,RC0', @separador CHAR(1) =',' SELECT * FROM STRING_SPLIT(@string,@separador) Go -- Exemplo 3 – Armazenando o resultado da divisão de uma string em uma nova tabela – DECLARE @string VARCHAR(100) = 'Microsoft,SQL Server,2016,RC0', @separador CHAR(1) =',' SELECT * INTO #SplitTable FROM STRING_SPLIT(@string,@separador) GO -- Visualizando a estrutura da tabela -- sp_Columns #SplitTable Go -- Consultando os dados da tabela -- Select * from #SplitTable Go -- Exemplo 4 – Apresentando a mensagem quando o separador de string for definido com mais de um caracter -- DECLARE @string VARCHAR(100) = 'pedrogalvaojunior#@gmail#@com', @separador CHAR(2) ='#@' SELECT * FROM STRING_SPLIT(@string,@separador) Go -- Exemplo 5 – Apresentando o comportamento da String_Split() quando um parâmetro apresenta valor nulo – SELECT * FROM STRING_SPLIT('pedrogalvaojunior,wordpress,com',NULL) Go -- Exemplo 6 – Realizando o split de uma string com base na junção de uma tabela com a função String_Split() – -- Criando a tabela Split -- Create Table Split ( SplitId INT IDENTITY (1,1) NOT NULL, SplitValue1 NVARCHAR(50), SplitValue2 NVARCHAR(50)) GO -- Inserindo linhas de registro -- INSERT INTO Split (SplitValue1, SplitValue2) VALUES ('Pedro','Galvão'), ('Junior','Galvão'), ('Antonio','Silva'), ('Chico','Bento') Go -- Realizando a Junção da Tabela Split com a função Split_String() -- Select SplitId, SplitValue1, SplitValue2, Value From Split S Inner Join String_Split('Pedro,Antonio',',') STS On S.SplitValue1 = STS.Value Go -- Exemplo 7 – Apresentando o resultado quando ambos os parâmetros vazios – Select * from String_Split(' ',',') Go -- Exemplo 8 – Apresentando o comportamento da String_Split() quando o caracter do final da string é o mesmo utilizado como separador – SELECT * FROM STRING_SPLIT('Conhecendo,SQL Server,2016,',',') Go
Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]
- Editado Junior Galvão - MVPMVP quinta-feira, 4 de outubro de 2018 12:08