• A slight variation to Luis's method and implemented as an inline table valued function

    CREATE FUNCTION compressDuplicates(@code nvarchar(4000))

    RETURNS TABLE WITH SCHEMABINDING AS

    RETURN

    WITH cteTally as (

    SELECT TOP(LEN(@code) - 1) ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) N

    FROM (VALUES (0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0)) E1(N)

    ,(VALUES (0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0)) E2(N)

    ,(VALUES (0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0)) E3(N)

    ),

    startpattern as (

    SELECT SUBSTRING(@code,1,1) P

    UNION ALL

    SELECT SUBSTRING(@code,N+1,1) P

    FROM cteTally

    WHERE SUBSTRING(@code,N,1) <> SUBSTRING(@code,N+1,1) COLLATE Latin1_General_BIN -- Change to suit comparison required

    )

    SELECT CAST(r AS NVARCHAR(4000)) result

    FROM (

    SELECT P

    FROM startpattern

    FOR XML PATH('')

    ) AS A(R);

    If there is non numerics in your string you will need to decide how to handle case, etc and set the collation accordingly