• DECLARE

    @s-2 VARCHAR(MAX)

    ,@Split1 CHAR(1)

    ,@Split2 CHAR(1)

    ,@Split3 CHAR(1)

    ,@X XML

    /* User input */

    SELECT

    @s-2 = '1-32|26,42-41|32'

    ,@Split1 = ','

    ,@Split2 = '-'

    ,@Split3 = '|'

    /* Split the string and convert to XML */

    SET @s-2 = '<Question><QuestionID>'+REPLACE(@S,@Split1,'</Value></Question><Question><QuestionID>')

    SET @s-2 = REPLACE(@S,@Split2,'</QuestionID><IndexNum>')

    SET @s-2 = REPLACE(@S,@Split3,'</IndexNum><Value>')+'</Value></Question>'

    SELECT @X = CONVERT(XML,'<root>' + @s-2 + '</root>')

    /* You could stop here and just display the data as XML */

    SELECT @X

    /* Display the results in a table */

    DECLARE @XML_Temp TABLE (XML_Content XML)

    INSERT INTO @XML_Temp VALUES (@X)

    SELECT

    Node.value('(QuestionID)[1]', 'varchar(50)') AS 'QuestionID'

    ,Node.value('(IndexNum)[1]', 'varchar(50)') AS 'IndexNum'

    ,Node.value('(Value)[1]', 'varchar(50)') AS 'Value'

    FROM

    @XML_Temp

    CROSS APPLY

    @X.nodes('root/Question/.') AS Content(Node)

    /* Output:

    QuestionId IndexNumber Value

    1 32 26

    42 41 32

    */