Dovrebbe funzionare. Hai provato a mostrarlo, cosa produce il tuo CAST(row AS DECIMAL)?
Incolla un esempio di dati che stai tentando di ordinare. Forse hai valori null o numeri che non possono rientrare nel tipo decimale.
Che versione di MySQL stai usando? Forse il motivo è questo (dall'aiuto di mysql):