--- From string to table
ref:http://alekdavis.blogspot.com/2009/04/convert-string-to-table-in-sql.html
----From Table values to string
CREATEFUNCTION[dbo].[ConvertCsvToNumbers]
(@StringASVARCHAR(8000))RETURNS@NumbersTABLE(NumberINT)ASBEGINSELECT@String =LTRIM(RTRIM(REPLACE(ISNULL(@String,''),' '/* tab */,' ')))IF (LEN(@String) = 0)RETURNDECLARE@StartIdxINTDECLARE@NextIdxINTDECLARE@TokenLengthINTDECLARE@TokenVARCHAR(16)SELECT@StartIdx = 0SELECT@NextIdx = 1WHILE @NextIdx > 0BEGINSELECT@NextIdx = CHARINDEX(',', @String, @StartIdx + 1)SELECT@TokenLength =CASEWHEN@NextIdx > 0THEN@NextIdxELSELEN(@String) + 1END- @StartIdx - 1SELECT@Token =LTRIM(RTRIM(SUBSTRING(@String, @StartIdx + 1, @TokenLength)))IF LEN(@Token) > 0INSERT@Numbers(Number)VALUES(CAST(@TokenASINT))SELECT@StartIdx = @NextIdxENDRETURNEND
declare @RoleIds varchar(max)
select @RoleIds = coalesce(@RoleIds + ',','') + convert(varchar, nRoleID)
from EmpRole
WHERE sEmployeeID =10
ref:http://alekdavis.blogspot.com/2009/04/convert-string-to-table-in-sql.html