• Probably not the best way to do this, just off the top of my head: -

    DECLARE @code NVARCHAR(255);

    SET @code = '12333345566689';

    WITH CTE(N) AS (SELECT 1 FROM (VALUES(1),(1),(1),(1),(1),(1),(1),(1),(1),(1))a(N)),

    CTE2(N) AS (SELECT 1 FROM CTE x CROSS JOIN CTE y),

    CTE3(N) AS (SELECT 1 FROM CTE2 x CROSS JOIN CTE2 y),

    CTE4(N) AS (SELECT 1 FROM CTE3 x CROSS JOIN CTE3 y),

    CTE5(N) AS (SELECT 1 FROM CTE4 x CROSS JOIN CTE4 y),

    CTE6(N) AS (SELECT TOP (LEN(@code)) 1 FROM CTE5 x CROSS JOIN CTE5 y),

    TALLY(N) AS (SELECT ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) FROM CTE6)

    SELECT @code = REPLACE(REPLACE(REPLACE(LTRIM(RTRIM(@code)),SUBSTRING(@code,N,1)+SUBSTRING(@code,N,1),SUBSTRING(@code,N,1)+CHAR(7)),CHAR(7)+SUBSTRING(@code,N,1),''),CHAR(7),'')

    FROM TALLY;

    SELECT @code;

    Returns "12345689"

    Based on REPLACE Multiple Spaces with One[/url] and The "Numbers" or "Tally" Table: What it is and how it replaces a loop[/url].


    Forever trying to learn
    My blog - http://www.cadavre.co.uk/
    For better, quicker answers on T-SQL questions, click on the following...http://www.sqlservercentral.com/articles/Best+Practices/61537/
    For better, quicker answers on SQL Server performance related questions, click on the following...http://www.sqlservercentral.com/articles/SQLServerCentral/66909/