Følgende burde virke:
SELECT to_number(:x,
translate(:x, '012345678-+', '999999999SS'),
'nls_numeric_characters=''.,''')
FROM dual;
Det vil bygge det korrekte andet argument 999.999999
med den effektive translate
så du ikke behøver at vide, hvor mange cifre der er på forhånd. Det vil fungere med alle understøttede Oracle-nummerformater (op til 62 signifikante cifre tilsyneladende i 10.2.0.3).
Interessant nok, hvis du har en rigtig stor streng, er den simple to_number(:x)
vil fungere, hvorimod denne metode vil mislykkes.
Rediger:understøttelse af negative tal takket være sOliver.