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

Làm cách nào để chuyển đổi hiệu quả văn bản thành số trong Oracle PL / SQL với NLS_NUMERIC_CHARACTERS không mặc định?

Những điều sau sẽ hoạt động:

SELECT to_number(:x, 
                 translate(:x, '012345678-+', '999999999SS'), 
                 'nls_numeric_characters=''.,''') 
  FROM dual;

Nó sẽ tạo đối số thứ hai chính xác 999.999999 với translate hiệu quả vì vậy bạn không cần phải biết trước có bao nhiêu chữ số. Nó sẽ hoạt động với tất cả định dạng số Oracle được hỗ trợ (có thể lên đến 62 chữ số có nghĩa trong 10.2.0.3).

Thật thú vị, nếu bạn có một chuỗi thực sự lớn thì to_number(:x) đơn giản sẽ hoạt động trong khi phương pháp này sẽ thất bại.

Chỉnh sửa:hỗ trợ số âm nhờ sOliver.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Từ khóa FROM không được tìm thấy ở nơi mong đợi (Oracle SQL)

  2. Làm thế nào để gọi một hàm Oracle với Con trỏ tham chiếu là Tham số ngoài từ C #?

  3. Cách tăng tốc độ tải dữ liệu từ oracle sql sang pandas df

  4. R12.2 Chu kỳ vá trực tuyến Tóm tắt

  5. Không thể truy xuất id của hàng được chèn cuối cùng trong Hibernate bằng Oracle