如何用SQL实现多行Name字段值的字符串拼接?
实现多行字符串拼接的SQL方案
你使用CONCAT()未成功,是因为该函数用于拼接同一行的多个字段,而你需要的是聚合多行的单个字段为一个连续字符串。不同数据库的实现方式如下:
- MySQL/MariaDB:使用
GROUP_CONCAT(),指定空分隔符即可:
SELECT GROUP_CONCAT(Name SEPARATOR '') AS combined_name FROM your_table_name;
注:若拼接结果超出默认长度限制(1024字节),可调整group_concat_max_len参数扩大上限。
- SQL Server 2017+:使用
STRING_AGG()函数:
SELECT STRING_AGG(Name, '') AS combined_name FROM your_table_name;
旧版本SQL Server可使用FOR XML PATH方式:
SELECT STUFF( (SELECT '' + Name FROM your_table_name FOR XML PATH('')), 1, 0, '' ) AS combined_name;
- PostgreSQL:使用
STRING_AGG()函数:
SELECT STRING_AGG(Name, '') AS combined_name FROM your_table_name;
- Oracle:使用
LISTAGG()函数,可通过ORDER BY保证拼接顺序与Id一致:
SELECT LISTAGG(Name, '') WITHIN GROUP (ORDER BY Id) AS combined_name FROM your_table_name;
内容的提问来源于stack exchange,提问作者Cường Dương
相关产品推荐
相关产品推荐

