sql >> Database >  >> RDS >> Oracle

Dynamische lengte in getalnotatie in to_number Oracle SQL

De enige manier is om de juiste waarde in te stellen voor nls_numeric_characters parametersessie breed en gebruik to_number() functie zonder een formaatmasker op te geven.

Hier is een eenvoudig voorbeeld.Decimaal scheidingsteken is een komma "," en numerieke letterlijke waarden bevatten een punt "." als decimaal scheidingsteken:

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. Hoe twee django-modellen (tabellen) samen te voegen tot één model (tabel)

  2. Mysql selecteer records met offset

  3. Ander resultaat in SQL-viool en in MySQL-server/PhpMyadmin

  4. Mysql-toegang tot de hoofdtabel in de rechts samengevoegde subquery