How to convert a recordset to a delimited string i

2020-07-17 06:52发布

Is there a way to convert a single column record set such as

1
2
3

into '1,2,3' string in SQL Server?

标签: sql-server
3条回答
2楼-- · 2020-07-17 07:02

COALESCE is decent way to do this

http://msdn.microsoft.com/en-us/library/ms190349.aspx

DECLARE @Out VARCHAR(2048)
Select @Out = COALESCE(@Out + ', ', '') + [YourColumn] from YourTable

print @Out
查看更多
放荡不羁爱自由
3楼-- · 2020-07-17 07:03
select stuff( (select ',' + YourColumn
               from YourTable
               for xml path('')), 1, 1, '')

Note: The stuff function just removes the first comma from the result string.

查看更多
Bombasti
4楼-- · 2020-07-17 07:21

I've had success creating a function using Coalesce like below to do this. You can then use the function in your select statement to get the delimited string. (You can add parameters to your function and use them in the coalesce select statement as needed.)

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
查看更多
登录 后发表回答