温馨提示×

如何在SQL Server使用WM_CONCAT

sql
小樊
262
2024-07-21 06:40:56
栏目: 云计算
亿速云云数据库,读写分离,安全稳定,弹性扩容,低至0.3元/天!! 点击查看>>

在SQL Server中,可以使用以下方法来模拟类似于Oracle中的WM_CONCAT函数的功能:

  1. 使用XML PATH
SELECT ID, 
       STUFF((SELECT ', ' + ColumnName 
              FROM TableName t2 
              WHERE t1.ID = t2.ID 
              FOR XML PATH('')), 1, 2, '') AS ConcatenatedColumn
FROM TableName t1
GROUP BY ID;
  1. 使用FOR XML PATH(‘’)和STUFF函数结合
SELECT ID, 
       STUFF((SELECT ', ' + ColumnName 
              FROM TableName t2 
              WHERE t1.ID = t2.ID 
              FOR XML PATH('')), 1, 2, '') AS ConcatenatedColumn
FROM TableName t1
GROUP BY ID;
  1. 使用自定义函数 可以创建一个自定义函数来模拟WM_CONCAT函数的功能,例如:
CREATE FUNCTION dbo.WM_Concat
(
    @ID INT
)
RETURNS VARCHAR(MAX)
AS
BEGIN
    DECLARE @ConcatenatedColumn VARCHAR(MAX)
    
    SELECT @ConcatenatedColumn = COALESCE(@ConcatenatedColumn + ', ', '') + ColumnName
    FROM TableName
    WHERE ID = @ID
    
    RETURN @ConcatenatedColumn
END

然后可以使用该函数来实现类似WM_CONCAT函数的功能:

SELECT ID, dbo.WM_Concat(ID) AS ConcatenatedColumn
FROM TableName
GROUP BY ID;

亿速云「云数据库 MySQL」免部署即开即用,比自行安装部署数据库高出1倍以上的性能,双节点冗余防止单节点故障,数据自动定期备份随时恢复。点击查看>>

推荐阅读:PL/SQL中WM_CONCAT的性能如何

0