none
Dividir dados da mesma célula RRS feed

  • 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
    quarta-feira, 3 de outubro de 2018 14:08

Respostas

Todas as Respostas

  • Deleted
    quarta-feira, 3 de outubro de 2018 14:21
  • Desde já, muito obrigado pela resposta, 

    A coluna tem nomes com 2 a 5 nomes

    Obrigado

    quarta-feira, 3 de outubro de 2018 14:27
  • Tenho nomes que é:

    André Simões

    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

    quarta-feira, 3 de outubro de 2018 14:37
  • Deleted
    quarta-feira, 3 de outubro de 2018 15:02
  • Obrigado pela resposta.

    Já tive essa query e não me mostra o ultimo nome, fica em branco

    quarta-feira, 3 de outubro de 2018 15:22
  • Deleted
    quarta-feira, 3 de outubro de 2018 16:31
  • 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."
    quarta-feira, 3 de outubro de 2018 17:28
  • Deleted
    quarta-feira, 3 de outubro de 2018 17:46
  • 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
    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]


    quinta-feira, 4 de outubro de 2018 12:08