Skip to content

Bits of .NET

Daily micro-tips for C#, SQL, performance, and scalable backend engineering.

  • Asp.Net Core
  • C#
  • SQL
  • JavaScript
  • CSS
  • About
  • ErcanOPAK.com
  • No Access
  • Privacy Policy
SQL

How to create a single string from multiple rows in T-SQL and MySQL

- 05.12.22 - ErcanOPAK

To create a single string from multiple rows in MySQL, you can use the GROUP_CONCAT function. This function allows you to concatenate values from multiple rows into a single string, separated by a specified delimiter. Here is an example of how you can use this function:

SELECT GROUP_CONCAT(column_name ORDER BY column_name ASC SEPARATOR ',')
FROM table_name
GROUP BY group_by_column;

In this example, the GROUP_CONCAT function will concatenate the values in the column_name column, ordered alphabetically, and separated by a comma. The results will be grouped by the group_by_column column.

To create a single string from multiple rows in T-SQL, you can use the FOR XML PATH clause in conjunction with the STUFF function. Here is an example of how you can use this approach:

SELECT STUFF(
    (SELECT ',' + column_name
     FROM table_name
     FOR XML PATH(''))
    , 1, 1, ''
)
FROM table_name
GROUP BY group_by_column;

In this example, the STUFF function is used to remove the leading comma from the concatenated string. The FOR XML PATH clause is used to concatenate the values in the column_name column, separated by a comma. The results will be grouped by the group_by_column column.

We can also use the STRING_AGG() function to create a single string from multiple rows in T-SQL. This function allows you to concatenate values from multiple rows into a single string, separated by a specified delimiter. Here is an example of how you can use this function:

SELECT STRING_AGG(column_name, ',')
FROM table_name
GROUP BY group_by_column;

In this example, the STRING_AGG function will concatenate the values in the column_name column, separated by a comma. The results will be grouped by the group_by_column column.

Note that the STRING_AGG() function is only available in T-SQL starting with SQL Server 2017. If you are using an older version of SQL Server, you will need to use the FOR XML PATH and STUFF approach described above.

Related posts:

SQL “Parameter Sniffing Hell” — The REAL Fix Nobody Uses

How to clean Query and Execution Plan Cache for Efficient Testing in MS SQL

How to use Replicate function for masking in SQL?

Post Views: 20

Post navigation

How to align inconsistently sized logos with CSS
Anime Suggestion: Aoashi

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

April 2026
M T W T F S S
 12345
6789101112
13141516171819
20212223242526
27282930  
« Mar    

Most Viewed Posts

  • Get the User Name and Domain Name from an Email Address in SQL (950)
  • How to add default value for Entity Framework migrations for DateTime and Bool (858)
  • Get the First and Last Word from a String or Sentence in SQL (836)
  • How to select distinct rows in a datatable in C# (805)
  • How to make theater mode the default for Youtube (754)
  • Add Constraint to SQL Table to ensure email contains @ (578)
  • How to enable, disable and check if Service Broker is enabled on a database in SQL Server (564)
  • Average of all values in a column that are not zero in SQL (531)
  • How to use Map Mode for Vertical Scroll Mode in Visual Studio (489)
  • Find numbers with more than two decimal places in SQL (447)

Recent Posts

  • C#: Use Init-Only Setters for Immutable Objects After Construction
  • C#: Use Expression-Bodied Members for Concise Single-Line Methods
  • C#: Enable Nullable Reference Types to Eliminate Null Reference Exceptions
  • C#: Use Record Types for Immutable Data Objects
  • SQL: Use CTEs for Readable Complex Queries
  • SQL: Use Window Functions for Advanced Analytical Queries
  • .NET Core: Use Background Services for Long-Running Tasks
  • .NET Core: Use Minimal APIs for Lightweight HTTP Services
  • Git: Use Cherry-Pick to Apply Specific Commits Across Branches
  • Git: Use Interactive Rebase to Clean Up Commit History Before Merge

Most Viewed Posts

  • Get the User Name and Domain Name from an Email Address in SQL (950)
  • How to add default value for Entity Framework migrations for DateTime and Bool (858)
  • Get the First and Last Word from a String or Sentence in SQL (836)
  • How to select distinct rows in a datatable in C# (805)
  • How to make theater mode the default for Youtube (754)

Recent Posts

  • C#: Use Init-Only Setters for Immutable Objects After Construction
  • C#: Use Expression-Bodied Members for Concise Single-Line Methods
  • C#: Enable Nullable Reference Types to Eliminate Null Reference Exceptions
  • C#: Use Record Types for Immutable Data Objects
  • SQL: Use CTEs for Readable Complex Queries

Social

  • ErcanOPAK.com
  • GoodReads
  • LetterBoxD
  • Linkedin
  • The Blog
  • Twitter
© 2026 Bits of .NET | Built with Xblog Plus free WordPress theme by wpthemespace.com