sql >> Database teknologi >  >> RDS >> Oracle

Hvordan konverteres tekst til tal effektivt i Oracle PL/SQL med ikke-standard NLS_NUMERIC_CHARACTERS?

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.



  1. 4 Fantastiske SQL Server-overvågningsressourcer til databaseadministratorer

  2. MySQL-fejl 1093 - Kan ikke angive måltabel til opdatering i FROM-klausulen

  3. Informationssystemer, data og information

  4. Hvad er DATALENGTH()-ækvivalenten i MySQL?