這裏不需要循環機制。試試這個下面
DECLARE @MENUID VARCHAR(MAX)='';
select @MenuID = @MENUID+ID_Menu+',' from OrderDetail where ID_Order = @ID_Order
--Removing last comma ',' with substring function.
SELECT @MENUID= SUBSTRING(@MENUID, 1, LEN(@MENUID)-1)
PRINT @MENUID
說明:
這裏您在打印@MENUID
如何而來的M005 M001從,M002,M003,M004,M005來了?因爲它是在最後階段。這意味着它已經在循環內部將值存儲在變量@MENUID
中。現在通過在循環跳轉到集合中的下一個值之前捕獲它自己來實現這一訣竅。
另一種方式Stuff
與FOR XML PATH('')
做的。堆棧溢出有很多答案。
--STUFF Used to remove first comma ','
--For xml path used to generate comma concatenated xml.
SELECT @MENUID=STUFF ((Select ','+ID_Menu from OrderDetail
where ID_Order = @ID_Order FOR XML PATH('')), 1,1,'')
)
PRINT @MENUID;