sql >> Databáze >  >> RDS >> Oracle

Jak efektivně převést text na číslo v Oracle PL/SQL s jiným než výchozím NLS_NUMERIC_CHARACTERS?

Mělo by fungovat následující:

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

Vytvoří správný druhý argument 999.999999 s efektivním translate takže nemusíte předem vědět, kolik číslic tam je. Bude fungovat se všemi podporovanými formáty čísel Oracle (až 62 platných číslic zjevně v 10.2.0.3).

Je zajímavé, že pokud máte opravdu velký řetězec, jednoduchý to_number(:x) bude fungovat, zatímco tato metoda selže.

Edit:podpora záporných čísel díky sOliver.



  1. Vyhledání, stanovení priority a vyřešení problémů se serverem SQL během několika minut

  2. Jak vložit data na SQL Server

  3. Spravujte MySQL pomocí phpMyAdmin na Ubuntu 10.10 (Maverick)

  4. Uvedeno APPL_TOP v Oracle Applications R12