Sentry Answers>SQL Server>

How to concatenate text from multiple rows into a single text string in SQL Server

How to concatenate text from multiple rows into a single text string in SQL Server

Richard C.

The Problem

Imagine you have a table in MS SQL Server with a column containing many strings in multiple rows. How do you display them concatenated in one line?

The Solution

Assume you have a table called Person with a Name column like the following:

Click to Copy
CREATE TABLE Person ( Id INT PRIMARY KEY, Name VARCHAR(255) ); INSERT INTO Person(Id, Name) VALUES (1, 'Amir'), (2, 'Sofia'), (3, 'Aya'), (4, 'Mateo'), (5, 'Leila'), (6, 'Yara'), (7, 'Ndidi'), (8, 'Santiago');

If you want to display all the names in one string and you are using SQL Server after 2017, you can use the STRING_AGG function to concatenate multiple rows:

Click to Copy
SELECT STRING_AGG(Name, ', ') AS Names FROM Person; -- Names -- Amir, Sofia, Aya, Mateo, Leila, Yara, Ndidi, Santiago

If you are using an earlier version of SQL Server you can use XML:

Click to Copy
SELECT Name + ', ' AS 'data()' FROM Person FOR XML PATH(''); -- XML_F52E2B61-18A1-11d1-B105-00805F49916B -- Amir, Sofia, Aya, Mateo, Leila, Yara, Ndidi, Santiago
  • Syntax.fmListen to the Syntax Podcast (opens in a new tab)
  • Community SeriesIdentify, Trace, and Fix Endpoint Regression Issues (opens in a new tab)
  • Syntax.fm logo
    Listen to the Syntax Podcast (opens in a new tab)

    Tasty treats for web developers brought to you by Sentry. Get tips and tricks from Wes Bos and Scott Tolinski.

    SEE EPISODES

Considered “not bad” by 4 million developers and more than 150,000 organizations worldwide, Sentry provides code-level observability to many of the world’s best-known companies like Disney, Peloton, Cloudflare, Eventbrite, Slack, Supercell, and Rockstar Games. Each month we process billions of exceptions from the most popular products on the internet.