Der CAST(NUM as DECIMAL...) ist Blödsinn, da ein CHAR(NUM) das selbe Ergebnis liefert wie ein CHAR(DEC).
DIGITS ist die Sonderform von CHAR und liefert nur die Zahlen, kein Vorzeichen, kein Dezimalkomma/-punkt und immer mit Vornullen, während CHAR eine "Zahlaufbereitung" vornimmt.