Implode type function in SQL Server 2000?

后端 未结 2 1329
时光说笑
时光说笑 2020-12-10 19:00

Is there an Implode type function for SQL Server?

What I have is a list (in a SQL server table):

 Apple
 Orange
 Pear
 Blueberry

a

相关标签:
2条回答
  • 2020-12-10 19:32

    I typically use the FOR XML PATH method for this, it works for row subqueries as well, simply

    SELECT ', ' + <column_name>
    FROM <table_name>
    ORDER BY <sort_order>
    FOR XML PATH('')
    

    This will give you your list with a ", " at the start, and the quickest way to remove that
    is to use stuff

    SELECT STUFF((
            SELECT ', ' + <column_name>
            FROM <table_name>
            ORDER BY <sort_order>
            FOR XML PATH('')
        ),1,2,'')
    
    0 讨论(0)
  • 2020-12-10 19:35

    There are some questions related to this already on SO (search for PIVOT or UNPIVOT or GROUP_CONCAT), but a simple solution for SQL Server (using a trick with variable concatenation) for your stated problem:

    DECLARE @str AS varchar(MAX)
    DECLARE @separator AS varchar(50)
    SET @separator = ', ' -- Here's your configurable version
    
    SELECT @str = COALESCE(@str + @separator, '') + <column_name>
    FROM <table_name>
    ORDER BY <sort_order>
    

    Of course, if this is needed on a per-row basis, you can use UDFs or the really cool FOR XML trick

    0 讨论(0)
提交回复
热议问题