• For only 5 chars, I wouldn't bother will all the CTEs and related folderol.

    Why not just:

    SELECT

    ISNULL(CAST(ASCII(SUBSTRING(data, 1, 1)) AS varchar(3)), '') +

    ISNULL(CAST(ASCII(SUBSTRING(data, 2, 1)) AS varchar(3)), '') +

    ISNULL(CAST(ASCII(SUBSTRING(data, 3, 1)) AS varchar(3)), '') +

    ISNULL(CAST(ASCII(SUBSTRING(data, 4, 1)) AS varchar(3)), '') +

    ISNULL(CAST(ASCII(SUBSTRING(data, 5, 1)) AS varchar(3)), '')

    FROM (

    SELECT '02yC' AS data UNION ALL

    SELECT '12G8' UNION ALL

    SELECT '9Pp1' UNION ALL

    SELECT '7@uL' UNION ALL

    SELECT '' UNION ALL

    SELECT 'a' UNION ALL

    SELECT 'b2' UNION ALL

    SELECT 'c34' UNION ALL

    SELECT 'd456' UNION ALL

    SELECT 'e5678'

    ) AS test_data

    SQL DBA,SQL Server MVP(07, 08, 09) A socialist is someone who will give you the shirt off *someone else's* back.