我有一个字段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
对于操作员“或”,即使有两门以上的课程也不需要逗号。
答案 0 :(得分:0)
我同意Tim的意见,你不应该尝试将这些值存储为逗号分隔值。它会在以后为你创造许多问题。
但是如果你想知道如何做到这一点,那么你可以在Sql Server中尝试这样:
declare @str varchar(1000)
SELECT @str= coalesce(@str + ', ', '') + x.mycol
FROM (SELECT DISTINCT mycol from mytable) x
print @str
答案 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