sql >> Databasteknik >  >> RDS >> Oracle

Hur konverterar man effektivt text till nummer i Oracle PL/SQL med icke-standard NLS_NUMERIC_CHARACTERS?

Följande bör fungera:

SELECT to_number(:x, 
                 translate(:x, '012345678-+', '999999999SS'), 
                 'nls_numeric_characters=''.,''') 
  FROM dual;

Det kommer att bygga det korrekta andra argumentet 999.999999 med den effektiva translate så du behöver inte veta hur många siffror det finns i förväg. Det kommer att fungera med alla Oracle-nummerformat som stöds (upp till 62 signifikanta siffror tydligen i 10.2.0.3).

Intressant nog, om du har en riktigt stor sträng den enkla to_number(:x) kommer att fungera medan den här metoden kommer att misslyckas.

Edit:stöd för negativa siffror tack vare sOliver.



  1. 2 sätt att få storleken på en databas i PostgreSQL

  2. Access dataverse-anslutningen är nu tillgänglig att testa

  3. Uppdatera primärnyckelvärdet med hjälp av enhetsramverket

  4. Kräver ODP.NET installation av Oracle Client