Следното трябва да работи:
SELECT to_number(:x,
translate(:x, '012345678-+', '999999999SS'),
'nls_numeric_characters=''.,''')
FROM dual;
Той ще изгради правилния втори аргумент 999.999999
с ефективния translate
така че не е нужно да знаете колко цифри има предварително. Той ще работи с всички поддържани формати на числата на Oracle (до 62 значими цифри очевидно в 10.2.0.3).
Интересното е, че ако имате наистина голям низ, простият to_number(:x)
ще работи, докато този метод ще се провали.
Редактиране:поддръжка за отрицателни числа благодарение на soliver.