none
Como faço para o retorno do STRING_SPLIT ser em diversas colunas ao invés de ser 1 coluna com diversas linhas. RRS feed

  • Pergunta

  • Bom dia!

    Pessoal preciso da ajuda de vocês.

    Atualmente utilizo o MSSQL17 e terei que utilizar o comando [SELECT value FROM STRING_SPLIT('Lorem ipsum dolor sit amet.', ' ')] porém preciso desses resultados em uma única linha com diversas colunas atualmente o sistema me retorna uma única coluna com diversas linhas:

    Exemplos:

    O que tenho atualmente

    Lorem
    ipsum
    dolor
    sit
    amet.

    E como gostaria em colunas:

    Lorem ipsum dolor sit amet.

    Se alguém conseguir me ajudar ficarei muito grato, abraços

    segunda-feira, 25 de fevereiro de 2019 14:05

Respostas

  • Boa noite Fernando, é possível fazer de duas formas, utilizando SQL dinâmico ou utilizando o PIVOT, o problema do pivot é que os dados ficam harcode, assim deixo um exemplo em SQL Dinâmico:

    DECLARE @cmd VarChar(MAX) = 'SELECT '
    
    SELECT @cmd += QUOTENAME(CAST(ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS VarChar(10))) + ' = ' + CHAR(39) +  value + CHAR(39) + ','
    FROM STRING_SPLIT('Lorem ipsum dolor sit amet.', ' ')
    
    SELECT @cmd = SUBSTRING(@cmd, 1, LEN(@cmd) - 1)
    
    EXEC(@cmd);

    Obrigado.

    terça-feira, 26 de fevereiro de 2019 23:50

Todas as Respostas

  • Deleted
    segunda-feira, 25 de fevereiro de 2019 14:14
  • Boa noite Fernando, é possível fazer de duas formas, utilizando SQL dinâmico ou utilizando o PIVOT, o problema do pivot é que os dados ficam harcode, assim deixo um exemplo em SQL Dinâmico:

    DECLARE @cmd VarChar(MAX) = 'SELECT '
    
    SELECT @cmd += QUOTENAME(CAST(ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS VarChar(10))) + ' = ' + CHAR(39) +  value + CHAR(39) + ','
    FROM STRING_SPLIT('Lorem ipsum dolor sit amet.', ' ')
    
    SELECT @cmd = SUBSTRING(@cmd, 1, LEN(@cmd) - 1)
    
    EXEC(@cmd);

    Obrigado.

    terça-feira, 26 de fevereiro de 2019 23:50
  • Bom dia , Como vc usa o Sql Server 2017 não vejo problema de usar a função String_Agg

    segue o exemplo

    SELECT String_Agg(value, ' ')
    FROM STRING_SPLIT('Lorem ipsum dolor sit amet.', ' ');
    
    SELECT 
    STRING_AGG(CONCAT(FirstName, ' ', LastName, ' (', ModifiedDate, ')'), CHAR(13)) 
      AS names 
    FROM Person.Person; 

    WITH Eu AS (SELECT *

        FROM

        (

            VALUES

                (CONCAT('Wesley Neves ', '#', '.NET Developer')),

                (CONCAT('M®CSA SQL 2016 Database Development', ' # ', 'MTA-SQL Server',' # ','MCP')),

                ('Pós Graduado em Banco de Dados com ênfase em BI'),

                        ('Pós Graduando em Big Data e Analytics')

        ) AS X (value)

       )

    SELECT *

    FROM Eu;


    Wesley Neves


    • Editado Wesley Neves quarta-feira, 27 de fevereiro de 2019 12:47 Correção
    quarta-feira, 27 de fevereiro de 2019 12:46