• Interesting thread.

    Combining my favorite parts from all replies I think I would now do something like this:

    DECLARE @Number Decimal(10,2)

    SET @Number = 12345678.90

    DECLARE @Number_String VarChar(25)

    SET @Number_String = Convert(VarChar(25), @Number)

    ;WITH

    T1 AS (SELECT 1 X UNION ALL SELECT 1 X),

    Sequence AS (SELECT Row_Number() OVER (ORDER BY A.X) AS Number FROM T1 A, T1 B, T1 C, T1 D)

    SELECT

    (

    SELECT

    SUBSTRING(@Number_String, Sequence.Number, 1)

    FROM

    Sequence

    WHERE

    Sequence.Number <= LEN(@Number_String)

    ORDER BY

    Sequence.Number DESC

    FOR XML PATH(''), TYPE

    )

    .value('.', 'VARCHAR(25)');