Oracle
 sql >> база данни >  >> RDS >> Oracle

Как ефективно да конвертирате текст в число в Oracle PL/SQL с NLS_NUMERIC_CHARACTERS, които не са по подразбиране?

Следното трябва да работи:

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Конкатениране и групиране на множество редове в Oracle

  2. MySQL COALESCE и NULLIF функция

  3. Създайте потребител с всички привилегии в Oracle

  4. Неявна разлика в преобразуването на потока от данни CAST спрямо ssis

  5. Как да експортирате резултатите от заявката на Oracle в JSON файл, когато използвате SQLcl