如何在SQL Server中从单字母列的表中拼接出YASEEN
实现单字符列拼接成目标字符串YASEEN
现有表Test_YY,列str_Col存储单个字符,需要将这些字符按顺序拼接成字符串YASEEN。首先修正原建表语句的列名错误(原语句列名与需求不符):
create table Test_YY (str_Col char(1)) insert into Test_YY select 'Y' UNION ALL select 'A' UNION ALL select 'S' UNION ALL select 'E' UNION ALL select 'E' UNION ALL select 'N'
以下是不同数据库环境下的实现方案:
SQL Server 环境
高版本(2017+):使用STRING_AGG函数
直接按顺序拼接,语法简洁:
SELECT STRING_AGG(str_Col, '') AS ConcatenatedString FROM Test_YY
低版本(2017以前):使用FOR XML PATH拼接
如果不支持STRING_AGG,可以用XML拼接后去除冗余:
SELECT STUFF( (SELECT '' + str_Col FROM Test_YY FOR XML PATH('')), 1, 0, '') AS ConcatenatedString
MySQL 环境
使用GROUP_CONCAT函数,注意显式指定排序以保证顺序:
SELECT GROUP_CONCAT(str_Col ORDER BY (SELECT 0) SEPARATOR '') AS ConcatenatedString FROM Test_YY;
注:ORDER BY (SELECT 0)用于保持插入顺序,若表中有自增主键或排序字段,可替换为对应字段。
Oracle 环境
使用LISTAGG函数,结合ROWNUM保证插入顺序:
SELECT LISTAGG(str_Col, '') WITHIN GROUP (ORDER BY ROWNUM) AS ConcatenatedString FROM Test_YY;
内容的提问来源于stack exchange,提问作者Muhammad Yaseen Mengal
相关产品推荐
相关产品推荐

