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

Hiểu hành vi của hàm remainder () trong Oracle

Bản thân những người đã viết tài liệu này (những người dường như không nhớ lại một số định nghĩa từ số học) dường như không chắc chắn về những gì họ đã viết. Mặt khác, trong phần giải thích, họ đề cập đến ROUND - nhưng sau này khi họ đưa ra một định nghĩa chính thức hơn thì họ nói

"Số nguyên gần nhất" không được định nghĩa chính thức trong số học và thực sự người ta được phép sử dụng tên đó cho vòng (x) ngoại trừ khi phần phân số của x chính xác là 0,5, trong trường hợp đó "số nguyên gần nhất" là không rõ ràng và người ta có thể chọn sử dụng "làm tròn xuống" làm định nghĩa của riêng họ về "số nguyên gần nhất".

Đừng quá khó chịu với sự mâu thuẫn trong tài liệu, nếu bạn có thể. Bạn sẽ thấy nhiều thứ khác.

Tuy nhiên :Điều tồi tệ hơn nhiều là hành vi không nhất quán. Tôi sử dụng Oracle 12.1 và trên máy tính của mình, tôi vừa thử và nhận được

remainder(10, 4) =  2
remainder( 6, 4) = -2

Không có vần điệu hay lý do. Tốt hơn nhiều nếu bạn thực hiện việc phân chia của riêng bạn, sử dụng FLOOR và những thứ tương tự.

Chỉnh sửa - Hoặc có thể có một số lý do; có lẽ họ sử dụng định nghĩa "số nguyên gần nhất" để có nghĩa là, trong trường hợp hòa, chẵn gần nhất số nguyên. Vẫn tạo ra kết quả không mong muốn, tốt nhất không nên sử dụng hàm REMAINDER () của Oracle.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các phiên bản máy chủ được hỗ trợ cho máy khách Oracle 12c

  2. Chuyển số hàng cho một cột trong Oracle

  3. sql (oracle) đếm số khoảng chồng chéo

  4. Không thể cập nhật mô hình dữ liệu Đối tượng từ cơ sở dữ liệu do lỗi TNS

  5. regexp_substr bỏ qua các vị trí trống