Это действительно так просто ... это прекрасно работает ...
select cast('10.15' as decimal(9,2)) - 1
from sysibm.sysdummy1;
В ваших данных есть что-то кроме действительного числового символа ... И это что-то помимо начального или конечного пробела. ..
Попробуйте следующее ...
select *
from table
where translate(column1, ' ','0123456789.')
<> ' '
or translate(column2, ' ','0123456789.')
<> ' '
Это покажет вам строки с альфа-символами ...
Если приведенное выше ничего не возвращает, тогда вы, вероятно, получили строку с двойными десятичными точками или что-то в этом роде ... Вы можете использовать регулярное выражение, чтобы найти их.