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

Długość dynamiczna w formacie liczby w to_number Oracle SQL

Jedynym sposobem jest ustawienie odpowiedniej wartości dla nls_numeric_characters parametryzacja całej sesji i użycie to_number() funkcja bez określania maski formatu.

Oto prosty przykład. Separatorem dziesiętnym jest przecinek "," a literały numeryczne zawierają kropkę "." jako separator dziesiętny:

SQL> show parameter nls_numeric_characters;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------
nls_numeric_characters               string      ,.

SQL> with t1(col) as(
  2    select '12345.567'  from dual union all
  3    select '12.45'      from dual
  4  )
  5  select to_number(col) as res
  6    from t1;
select to_number(col)
       *
ERROR at line 5:
ORA-01722: invalid number 

SQL> alter session set nls_numeric_characters='.,';

Session altered.

SQL> with t1(col) as(
  2    select '12345.567'  from dual union all
  3    select '12.45'      from dual
  4  )
  5  select to_number(col) as res
  6    from t1;

res                                                                 
--------------    
     12345.567       
         12.45    


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wypełnianie elementu drzewa grupą rekordów w formularzach Oracle

  2. Błąd czasu wykonywania:-2147217887(80040e21) System nie może znaleźć tekstu komunikatu dla numeru komunikatu 0x80040e21 w pliku komunikatu dla OraOLEDB

  3. Błąd Oracle .Net ManagedDataAccess:nie można załadować typu „OracleInternal.Common.ConfigBaseClass” z zestawu

  4. Pobieranie określonych ciągów w ciągu za pomocą Oracle SQL

  5. Rozwiąż funkcje matematyczne PL/SQL