Can you give me some pointers (or point in the right direction on what search terms for google)? In a stored procedure I have a parameter @TAG (string). I receive '(14038314,14040071)' (for example) from another application that cannot be altered. In the stored procedure, I need to split apart '(14038314,14040071)' to put quotes around each string value, rebuild it, strip out the outer quotes,strip out the parens and pass it to @TAG in the query below so that it looks like the line commented out below?
SELECT V.NAME AS VARIETY, TAGID FROM mfinv.dbo.onhand h INNER JOIN mfinv.dbo.onhand_tags t on h.onhand_id = t.onhand_id INNER JOIN mfinv.dbo.onhand_tag_details d on t.onhand_tag_id = d.onhand_tag_id INNER JOIN mfinv.dbo.FM_IC_PS_VARIETY V ON V.VARIETYIDX = d.VARIETYIDX LEFT JOIN mfinv.dbo.FM_IC_TAG TG ON TG.TAGIDX = t.TAGIDX WHERE h.onhand_id = (SELECT onhand_id FROM mfinv.dbo.onhand WHERE onhand_id = IDENT_CURRENT('mfinv.dbo.onhand')) AND TG.ID IN (@TAG) --AND TG.ID IN ('14038314','14040071')You can Use Dynamic SQL Like This
DECLARE @TAG Nvarchar(MAX)='14038314,14040071' set @TAG=''''+REPLACE(@TAG,',',''',''')+'''' --select @TAG DECLARE @SQL NVARCHAR(MAX)=N' Select V.NAME AS VARIETY, TAGID FROM mfinv.dbo.onhand h INNER JOIN mfinv.dbo.onhand_tags t on h.onhand_id = t.onhand_id INNER JOIN mfinv.dbo.onhand_tag_details d on t.onhand_tag_id = d.onhand_tag_id INNER JOIN mfinv.dbo.FM_IC_PS_VARIETY V ON V.VARIETYIDX = d.VARIETYIDX LEFT JOIN mfinv.dbo.FM_IC_TAG TG ON TG.TAGIDX = t.TAGIDX WHERE h.onhand_id = (SELECT onhand_id FROM mfinv.dbo.onhand WHERE onhand_id = IDENT_CURRENT (''mfinv.dbo.onhand'')) AND TG.ID IN ('<a href="/cdn-cgi/l/email-protection" data-cfemail="0922495d484e">[email protected]</a>+')' PRINT @SQL EXEC (@SQL)