在T-SQL中输出逗号分隔列表

Mic*_*cah 6 sql t-sql sql-server-2008

我有一张带有电话号码的桌子.我没有为每个号码吐出一行,而是返回逗号分隔的电话号码列表.在sql中最简单的方法是什么?一会儿循环?

Bre*_*t D 9

其中一些答案过于复杂,包括合并和更复杂的XML查询.我经常用这个:

select @Phones=(
  Select PhoneColumn+','
  From TableName
  For XML Path(''))
-- Remove trailing comma if necessary
select @Phones=left(@Phones,len(@Phones)-1)
Run Code Online (Sandbox Code Playgroud)


TKT*_*KTS 1

从这个问题看我的回答。该问题中还列出了其他几种方法。COALESCE 或 xml 路径应该可以解决问题。

编辑(添加我在上一个问题中的答案):

CREATE FUNCTION [dbo].[fn_MyFunction]()RETURNS NVARCHAR(MAX)
 AS 
BEGIN    
    DECLARE @str NVARCHAR(MAX)    
    DECLARE @Delimiter CHAR(2)     
    SET @Delimiter = ', '    
    SELECT @str = COALESCE(@str + @Delimiter,'') + AColumn    
     FROM dbo.myTable    
    RETURN RTRIM(LTRIM(@str))
 END
Run Code Online (Sandbox Code Playgroud)