Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak skutecznie przekonwertować tekst na liczbę w Oracle PL/SQL przy użyciu innych niż domyślna wartości NLS_NUMERIC_CHARACTERS?

Powinny działać:

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

Zbuduje poprawny drugi argument 999.999999 z wydajnym translate więc nie musisz wcześniej wiedzieć, ile jest cyfr. Będzie działać ze wszystkimi obsługiwanymi formatami liczb Oracle (do 62 cyfr znaczących najwyraźniej w 10.2.0.3).

Co ciekawe, jeśli masz naprawdę duży ciąg, prosty to_number(:x) zadziała, podczas gdy ta metoda zawiedzie.

Edycja:obsługa liczb ujemnych dzięki sOliver.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PLS-00103:Napotkałem symbol CREATE

  2. Napraw „Nie można zainstalować w Homebrew na procesorze ARM w domyślnym prefiksie Intela (/usr/local)!”

  3. Różnica między literałami N'String' i U'String' w Oracle

  4. Operator obrotu Oracle

  5. Uzyskiwanie dostępu do tabeli innego użytkownika w ramach procedury składowanej Oracle