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

Ustawienie NLS_NUMERIC_CHARACTERS dla dziesiętnych

Możesz zobaczyć swoje bieżące ustawienia sesji, pytając nls_session_parameters :

select value
from nls_session_parameters
where parameter = 'NLS_NUMERIC_CHARACTERS';

VALUE                                  
----------------------------------------
.,                                       

To może różnić się od wartości domyślnych bazy danych, które można zobaczyć w nls_database_parameters .

W tej sesji Twoje błędy zapytań:

select to_number('100,12') from dual;

Error report -
SQL Error: ORA-01722: invalid number
01722. 00000 -  "invalid number"

Mogę zmienić moją sesję, bezpośrednio za pomocą alter session lub upewniając się, że mój klient jest skonfigurowany w sposób, który prowadzi do ustawienia potrzeb (może być dziedziczony z systemu operacyjnego lub ustawień regionalnych Javy na przykład):

alter session set NLS_NUMERIC_CHARACTERS = ',.';
select to_number('100,12') from dual;

TO_NUMBER('100,12')
-------------------
             100,12 

W SQL Developer możesz ustawić preferowaną wartość w Tool->Preferences->Database->NLS.

Ale mogę również zastąpić to ustawienie sesji jako część zapytania, opcjonalnym trzecim nlparam parametr do to_number(); choć to sprawia, że ​​opcjonalny drugi fmt parametr jest również niezbędny, więc musisz być w stanie wybrać odpowiedni format:

alter session set NLS_NUMERIC_CHARACTERS = '.,';
select to_number('100,12', '99999D99', 'NLS_NUMERIC_CHARACTERS='',.''')
from dual;

TO_NUMBER('100,12','99999D99','NLS_NUMERIC_CHARACTERS='',.''')
--------------------------------------------------------------
                                                        100.12 

Domyślnie wynik jest nadal wyświetlany z ustawieniami mojej sesji, więc separatorem dziesiętnym jest nadal kropka.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wywołać procedurę składowaną w JDBC

  2. Baza danych Oracle wisi w nieskończoność w zapytaniach UPDATE

  3. Usuwanie wierszy z tabel nadrzędnych i podrzędnych

  4. Jak znaleźć różnice w formacie B/W TIMESTAMP w Oracle?

  5. Kolekcje Oracle PL/SQL — dodawanie elementów do istniejącej tabeli