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

Динамична дължина на числов формат в to_number Oracle SQL

Единственият начин е да зададете подходящата стойност за nls_numeric_characters параметър за цялата сесия и използвайте to_number() функция без посочване на маска за формат.

Ето прост пример. Десетичният разделителен знак е запетая "," и числови литерали съдържат точка "." като десетичен разделителен знак:

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. .patch_storage

  2. Времево клеймо на Oracle към sql сървър DateTime

  3. Функция ROUND(число) в Oracle

  4. Не мога да свържа моя екземпляр на RDS Oracle към PHP сървър

  5. Вмъкване на няколко записа в oracle