Software  
 
Rede de conhecimento computador >> Software >> SQL Server >> Content
Existe alguma função no SQL Server para retornar todos os valores de uma coluna separada por vírgula que você não deseja usar loop ou sever cursor?
Sim, o SQL Server oferece várias maneiras de concatenar todos os valores de uma coluna em uma única sequência separada por vírgula sem usar loops ou cursores. Os métodos mais eficientes geralmente envolvem o uso de `string_agg` (disponível no SQL Server 2017 e posterior) ou` para XML Path` (também funciona em versões mais antigas).

Método 1:usando `string_agg` (SQL Server 2017 e posterior)

Esta é a abordagem mais simples e eficiente para as versões modernas do SQL Server:

`` `SQL
Selecione String_agg (YourColumn, ',') como concatenatedvalues
Da sua tabela;
`` `

Substitua `yourtable` e` yourColumn` pelos nomes reais da sua tabela e coluna. Isso retornará uma única linha com todos os valores de 'YourColumn` concatenados em uma única string, separada por vírgulas.


Método 2:Usando `para XML Path` (SQL Server 2016 e anterior)

Para versões mais antigas do SQL Server, `para XML Path` fornece uma funcionalidade semelhante:

`` `SQL
Selecione material ((
Selecione ',' + YourColumn
Da sua tabela
Para XML Path ('')
), 1, 1, '') como concatenado valores;
`` `

Este método usa uma subconeração para concatenar os valores com vírgulas e, em seguida, a função `Stuff` remove a vírgula líder.


Exemplo:

Digamos que você tenha uma tabela chamada 'Funcionários' com uma coluna chamada 'Employeename`:

| Employeename |
| --- | --- |
| John Doe |
| Jane Smith |
| David Lee |


Usando `string_agg`:

`` `SQL
Selecione String_agg (Employeename, ',') como empregados nomes
De funcionários;
`` `

Isso retornaria:

| Employeenames |
| --- | --- |
| John Doe, Jane Smith, David Lee |


Usando `para XML Path`:

`` `SQL
Selecione material ((
Selecione ',' + Employeename
De funcionários
Para XML Path ('')
), 1, 1, '') como empregados;
`` `

Isso também retornaria:

| Employeenames |
| --- | --- |
| John Doe, Jane Smith, David Lee |


Considerações importantes:

* valores nulos: Ambos os métodos lidam com os valores `null`, ignorando -os efetivamente. Se você precisar representar valores `null` na sua sequência concatenada (por exemplo, usando um marcador especial como" null "), você precisará adicionar uma instrução` case` na agregação. Por exemplo, com `string_agg`:

`` `SQL
Selecione String_Agg (caso quando o NOME DO EMPROMENTO É NULL THEN 'NULL' ENGENSONEMENEM END, ',') como Names Employeeen
De funcionários;
`` `

* Tipo de dados: Verifique se o tipo de dados da sua coluna é compatível com a concatenação da String. Se necessário, use `hast` ou` convert` para converter a coluna em um tipo de dados adequado (por exemplo, `varchar`).

* desempenho: Para tabelas muito grandes, `string_agg` geralmente é mais executado que` para o caminho XML.


Escolha o método apropriado para a versão do seu SQL Server. `String_agg` é a opção preferida e mais legível se a versão do SQL Server suportar.

Anterior :

Próximo :
  Os artigos relacionados
·O que é LBAC SYS no Oracle? 
·Podem ser executadas instruções SQL sem um dbms? 
·Qual é a forma completa do Oracle 8i? 
·Quantos registros o Oracle Database pode manter? 
·Por que estamos usando o Oracle em vez do MySQL? 
·SQL Server Query Tutorial 
·Como faço para restaurar um banco de dados SQL A parti…
·Como instalar o driver ODBC da Microsoft para o SQL Ser…
·Como usar um SQL Server como fonte de dados 
·Como reindexar uma tabela de banco de dados em Microsof…
  Artigos em destaque
·Como usar RipIt4Me , DVDDecrypter & DVDShrink 
·Como Gravar Jogos gratuitos em um DVD 
·Oblivion Problemas de mouse 
·Microsoft Office Word Passo - a-passo 
·Como fazer uma capa de CD usando o Microsoft Word 
·Por que os padeiros usam a folha de spread? 
·Como remover DRM de Napster 
·Quem é o Createe Computer? 
·QuickTime Export Parado em cinco segundos 
·O que é um kit de microprocessador? 
Cop e direita © Rede de conhecimento computador https://ptcomputador.com Todos os Direitos Reservados