【问题标题】:Comma separated column value from Temporary Table临时表中的逗号分隔列值
【发布时间】:2014-02-28 13:05:12
【问题描述】:

我正在将选择语句结果插入临时表。我希望它的一列值用逗号分隔,所以我尝试了以下但它不起作用。

SELECT @IdList = COALESCE(@IdList+',' ,'') + s.Id 
        FROM (SELECT Id FROM #_TempStudentTable) as s

我检查了#_TempStudentTable 中的数据,它有数据。但是当我尝试显示IdList 时,它返回NULL。 帮我。不知道是什么问题。

【问题讨论】:

  • @IdList初始化为''NULL 值只会产生更多 NULL 值。
  • @GordonLinoff,我尝试了你的解决方案,但它不起作用。

标签: sql sql-server-2008 sql-server-2008-r2


【解决方案1】:

试试这个:

DECLARE @IdList VARCHAR(MAX)

SELECT @IdList  = COALESCE(@IdList  + ',','') + CAST(Id AS VARCHAR(100)) 
FROM #_TempStudentTable

SELECT @IdList 

您也可以使用下面的 XML 来获取它而无需变量

SELECT  STUFF(( SELECT  ',' + CAST(Id AS VARCHAR(10))
            FROM    #_TempStudentTable
            FOR XML PATH (''))
            , 1, 1, '')

【讨论】:

  • 不知道第一个有什么问题。它适用于数字字段,但适用于 varchar 字段。
  • 第二个正在工作。我不知道第一个有什么问题。
【解决方案2】:

在 SQL Server 中,您可以使用以下查询来获取逗号分隔的列名/标题列表:

SELECT STUFF((
            SELECT ',' + CAST(name AS VARCHAR(50))
            FROM (
                SELECT name
                FROM tempdb.sys.columns
                WHERE [object_id] = OBJECT_ID(N'tempdb..#temptablename')
                ) k
            FOR XML PATH('')
            ), 1, 1, '')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    相关资源
    最近更新 更多