如何在SQL中添加逗号和字符串

时间:2016-05-04 08:02:21

标签: sql loops replace sql-server-2012

我有一个字段IN SQL Item_Name和一行作为ITEM1,ITEM2,ITEM3和ITEM4 我将这些行转换为单个列,使用逗号分隔的值,如ITEM1,ITEM2,ITEM3,ITEM4。如何将此列转换为ITEM1,ITEM2,ITEM3和ITEM4。我需要一个和最终项目。我可以在循环中使用替换吗?

这是我的情景。 这完全是关于课程和必修课程

COURSE_ID   PRE_COURSE_ID    OPERATOR
--------------------------------------------
IT105       IT100            AND
IT105       IT101              
IT106       1T103
BM110       BM101            AND
BM110       BM102            AND
BM110       BM103
CC107       CC103            OR
CC107       CC104
-------------------------------------------------------

现在我期待输出如下;

COURSE_ID PRE_COURSE_ID
------------------------
IT105     IT100 and IT101
IT106     IT103
BM110     BM101,BM102 and BM103
CC107     CC103 OR CC104  

对于操作员“或”,即使有两门以上的课程也不需要逗号。

2 个答案:

答案 0 :(得分:0)

我同意Tim的意见,你不应该尝试将这些值存储为逗号分隔值。它会在以后为你创造许多问题。

但是如果你想知道如何做到这一点,那么你可以在Sql Server中尝试这样:

declare @str varchar(1000)

SELECT @str= coalesce(@str + ', ', '') + x.mycol
FROM (SELECT DISTINCT mycol from mytable) x

print @str 

enter image description here

答案 1 :(得分:0)

试试这个:

CREATE TABLE #tmp (name NVARCHAR(10))

INSERT INTO #tmp VALUES('ITEM1'),('ITEM2'),('ITEM3')

    SELECT STUFF((
            SELECT *
            FROM (
                SELECT ',' + name AS [text()]
                FROM #tmp
            )q
            FOR XML PATH('')
            ),1,1,'')
    DROP TABLE #tmp