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

Làm thế nào để một Oracle NUMBER có Quy mô lớn hơn Độ chính xác?

Theo Tài liệu Oracle:

Đây là cách tôi thấy nó:

  • Khi Precision lớn hơn Quy mô (ví dụ:NUMBER(8,5) ), không có vấn đề, điều này là đơn giản. Precision có nghĩa là số sẽ có tổng cộng 8 chữ số, trong đó 5 chữ số ở phần phân số (. →), vì vậy phần nguyên (←.) sẽ có 3 chữ số. Điều này thật dễ dàng.
  • Khi bạn thấy Precision đó nhỏ hơn Scale (ví dụ:NUMBER(2, 5) ), điều này có nghĩa là 3 điều:

    • Số sẽ không có bất kỳ phần nguyên nào, chỉ có phần phân số. Vì vậy, số 0 trong phần nguyên không được tính trong các phép tính, bạn nói .12345 không phải 0,12345. Trên thực tế, nếu bạn chỉ định 1 chữ số trong phần nguyên, nó sẽ luôn trả về lỗi.
    • Scale đại diện cho tổng số chữ số trong phần phân số mà số đó sẽ có. 5 trong trường hợp này. Vì vậy, nó có thể là .12345 hoặc .00098 nhưng tổng cộng không quá 5 chữ số.
    • Phần phân số được chia thành 2 phần, số có nghĩa và số không. Các con số quan trọng được chỉ định bởi Precision và số lượng số không tối thiểu bằng (Scale - Precision ). Ví dụ:

    ở đây Số sẽ phải có tối thiểu 3 số không trong phần phân số. theo sau là 2 số có nghĩa (cũng có thể có số 0). Vì vậy, 3 số không + 2 số có nghĩa =5 là Scale số.

Tóm lại, khi bạn thấy ví dụ:NUMBER(6,9) , điều này cho chúng ta biết rằng phần phân số sẽ có tổng cộng 9 chữ số, bắt đầu bằng 3 số 0 bắt buộc và tiếp theo là 6 chữ số.

Dưới đây là một số ví dụ:

SELECT CAST(.0000123 AS NUMBER(6,9)) FROM dual;   -- prints: 0.0000123; .000|012300
SELECT CAST(.000012345 AS NUMBER(6,9)) FROM dual; -- prints: 0.0000123; .000|012345
SELECT CAST(.123456 AS NUMBER(3,4)) FROM dual;    -- ERROR! must have a 1 zero (4-3=1)
SELECT CAST(.013579 AS NUMBER(3,4)) FROM dual;    -- prints: 0.0136; max 4 digits, .013579 rounded to .0136


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thủ tục chạy Oracle với tham số một trong và tham số nhiều ra

  2. Tìm kiếm một giá trị trong giá trị cột lưu trữ các giá trị được phân tách bằng dấu phẩy

  3. Sử dụng NVL cho nhiều cột - Oracle SQL

  4. Cài đặt các biểu mẫu và báo cáo Oracle 11g Release 2

  5. Tệp tải lên trong ứng dụng không phải Apex PL / SQL đã được di chuyển sang ORDS