Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

NLS_NUMERIC_CHARACTERS cài đặt cho số thập phân

Bạn có thể xem cài đặt phiên hiện tại của mình bằng cách truy vấn nls_session_parameters :

select value
from nls_session_parameters
where parameter = 'NLS_NUMERIC_CHARACTERS';

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

Điều đó có thể khác với mặc định của cơ sở dữ liệu mà bạn có thể thấy trong nls_database_parameters .

Trong phiên này, lỗi truy vấn của bạn:

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

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

Tôi có thể thay đổi phiên của mình, hoặc trực tiếp bằng alter session hoặc bằng cách đảm bảo máy khách của tôi được định cấu hình theo cách dẫn đến cài đặt mà chuỗi cần (ví dụ:nó có thể được kế thừa từ hệ điều hành hoặc ngôn ngữ Java):

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

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

Trong SQL Developer, bạn có thể đặt giá trị ưa thích của mình trong Tool-> Preferences-> Database-> NLS.

Nhưng tôi cũng có thể ghi đè cài đặt phiên đó như một phần của truy vấn, với nlsparam thứ ba tùy chọn tham số thành to_number(); mặc dù điều đó làm cho fmt thứ hai tùy chọn tham số cũng cần thiết, vì vậy bạn cần có thể chọn một định dạng phù hợp:

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 

Theo mặc định, kết quả vẫn được hiển thị với cài đặt phiên của tôi, vì vậy dấu phân tách thập phân vẫn là dấu chấm.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để gọi thủ tục được lưu trữ oracle bao gồm kiểu do người dùng xác định trong java?

  2. cx_Oracle và Xử lý ngoại lệ - Các phương pháp hay?

  3. Đối chiếu không phân biệt trọng âm và chữ hoa chữ thường trong Oracle với LIKE

  4. PARTITION BY có và không có KEEP trong Oracle

  5. Cách xuất kết quả truy vấn sang tệp .txt khi sử dụng SQLcl (Oracle)