• Think I may have figured it out:

    CREATE FUNCTION [dbo].[ProperCase]

    (

    @StrIn VARCHAR(255)

    )

    RETURNS TABLE WITH SCHEMABINDING

    AS

    RETURN

    SELECTProperCaseString = (

    (SELECTCASE

    WHEN GN.N = 1 THEN UPPER(SUBSTRING(@StrIn,GN.N,1))

    WHEN SUBSTRING(@StrIn,GN.N-1,1) IN (' ','-','''') THEN UPPER(SUBSTRING(@StrIn,GN.N,1))

    ELSE LOWER(SUBSTRING(@StrIn,GN.N,1))

    END AS [text()]

    FROMdbo.GetNums(1,ISNULL(LEN(@StrIn),1)) AS GN

    FOR XML PATH(''), TYPE

    ).value('.','varchar(8000)')

    );

    Now to see if it actually is an improvement!

    And if anyone has anything to add please do.