代码之家  ›  专栏  ›  技术社区  ›  Frank V

SQL Server 2000中的内爆类型函数?

  •  4
  • Frank V  · 技术社区  · 15 年前

    是否有用于SQL Server的内爆类型函数?

    我有一个列表(在SQL Server表中):

     Apple
     Orange
     Pear
     Blueberry
    

    我希望他们能像

     Apple, Orange, Pear, Blueberry
    

    我希望空格和逗号是可配置的,但我总是可以替换它,如果它不是…

    如果您能提供快速帮助,我们将不胜感激!

    2 回复  |  直到 15 年前
        1
  •  10
  •   Community uzul    7 年前

    在SO(搜索pivot或unpivot或group_concat)上已经有一些与此相关的问题,但对于您所说的问题,SQL Server的简单解决方案(使用带有变量连接的技巧)是:

    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>
    

    当然,如果每行都需要这样做,则可以使用UDF或 really cool FOR XML 戏法

        2
  •  2
  •   Paul    15 年前

    我通常使用for-xml路径方法,它也适用于行子查询,只是

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

    这将在开始时给您一个带有“,”的列表,并以最快的方式删除它
    就是使用东西

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