• As far as i know, we dont have any camel-casing utility function in T-SQL.

    Here is my stab at it

    DECLARE @Table TABLE

    (

    iD INT

    ,AttrVal1 VARCHAR(100)

    ,AttrVal2 VARCHAR(100)

    )

    INSERT INTO @Table

    SELECT 1 , 'eXEC' ,'exec Proc myproc'

    UNION ALL SELECT 2 , 'Sql' ,'Exec Proc Myproc2'

    UNION ALL SELECT 3 , 'tsql' ,'CREATE FUNCTION A'

    UNION ALL SELECT 4 , 'BCP' ,'bulk upload all files'

    UNION ALL SELECT 5 , ' xp_cmdshell ' ,' dir /*'

    ; WITH CTE AS

    (

    SELECT T.iD

    , T.AttrVal1

    , T.AttrVal2

    , UprCaseAttVal1 = STUFF(CrsApp1.AttVal1 ,1,1,UPPER(LEFT(CrsApp1.AttVal1,1)))

    , UprCaseAttVal2 = STUFF(CrsApp2.Item ,1,1,UPPER(LEFT(CrsApp2.Item,1)))

    , CrsApp2.ItemNumber

    FROM @Table T

    CROSS APPLY (SELECT RTRIM(LTRIM(T.AttrVal1)) , RTRIM(LTRIM(T.AttrVal2)) ) CrsApp1 (AttVal1,AttVal2)

    CROSS APPLY dbo.DelimitedSplit8K (CrsApp1.AttVal2,' ') CrsApp2

    )

    SELECT C.iD

    ,AttrVal1 = C.UprCaseAttVal1

    ,AttrVal2 = STUFF ( ( SELECT ' '+C1.UprCaseAttVal2

    FROM CTE C1

    WHERE c1.iD = C.id

    ORDER BY C1.ItemNumber

    FOR XML PATH(''),TYPE

    ).value('.','VARCHAR(MAX)') , 1,1,SPACE(0))

    FROM CTE C

    GROUP BY C.iD , C.UprCaseAttVal1