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

Hàm ROUND (số) trong Oracle

Trong Oracle, ROUND(number) hàm trả về một số được làm tròn đến một số chữ số thập phân nhất định.

Theo mặc định, nó làm tròn số thành 0 vị trí thập phân, nhưng bạn có thể cung cấp đối số tùy chọn chỉ định số vị trí thập phân sẽ sử dụng.

Oracle cũng có ROUND(date) cú pháp, được sử dụng vào ngày tháng. Bài viết này chỉ nói về ROUND(number) cú pháp, được sử dụng trên các số.

Cú pháp

Cú pháp như sau:

ROUND(n [, integer ])

Ở đâu n có thể là bất kỳ kiểu dữ liệu số hoặc bất kỳ kiểu dữ liệu không phải số nào có thể được chuyển đổi hoàn toàn thành kiểu dữ liệu số và integer là một số nguyên tùy chọn chỉ định số vị trí thập phân để làm tròn n đến.

Ví dụ

Đây là một ví dụ:

SELECT ROUND(7.85)
FROM DUAL;

Kết quả:

   ROUND(7.85) 
______________ 
             8 

Giá trị âm

Chuyển nó sang một giá trị âm sẽ tạo ra kết quả sau:

SELECT ROUND(-7.85)
FROM DUAL;

Kết quả:

   ROUND(-7.85) 
_______________ 
             -8

Đối số thứ hai

Dưới đây là một ví dụ về việc cung cấp đối số thứ hai:

SELECT ROUND(7.85, 1)
FROM DUAL;

Kết quả:

   ROUND(7.85,1) 
________________ 
             7.9

Trong trường hợp này, tôi đã chỉ định rằng kết quả phải được làm tròn đến một chữ số thập phân.

Dưới đây là một ví dụ khác với số lượng vị trí thập phân lớn hơn:

SELECT ROUND(3.14159265359, 4)
FROM DUAL;

Kết quả:

   ROUND(3.14159265359,4) 
_________________________ 
                   3.1416

Làm tròn phủ định

Bạn cũng có thể chỉ định một giá trị âm cho đối số thứ hai. Làm như vậy làm tròn số sang bên trái của dấu thập phân:

SELECT ROUND(75631, -3)
FROM DUAL;

Kết quả:

   ROUND(75631,-3) 
__________________ 
             76000

Làm tròn các đối số không phải dạng số

Đây là những gì sẽ xảy ra khi chúng tôi cố gắng làm tròn một đối số không phải là số mà không thể chuyển đổi thành kiểu dữ liệu số:

SELECT ROUND('Bruce')
FROM DUAL;

Kết quả:

Error starting at line : 1 in command -
SELECT ROUND('Bruce')
FROM DUAL
Error report -
ORA-01722: invalid number

Tuy nhiên, chúng ta có thể làm tròn ngày - có một phiên bản ngày của hàm này cho phép chúng ta làm tròn ngày.

Giá trị rỗng

Đang cố gắng làm tròn null trả về null và cố gắng làm tròn một số bằng null cũng dẫn đến null :

SET NULL 'null';

SELECT 
    ROUND(null),
    ROUND(null, 2),    
    ROUND(2.345, null)
FROM DUAL;

Kết quả:

   ROUND(NULL)    ROUND(NULL,2)    ROUND(2.345,NULL) 
______________ ________________ ____________________ 
          null             null                 null 

Theo mặc định, SQLcl và SQL * Plus trả về một khoảng trống bất cứ khi nào null xảy ra do một SELECT trong SQL tuyên bố.

Tuy nhiên, bạn có thể sử dụng SET NULL để chỉ định một chuỗi khác được trả về. Ở đây tôi đã chỉ định rằng chuỗi null nên được trả lại.

Số lượng đối số không chính xác

Đang gọi ROUND() mà không chuyển bất kỳ đối số nào sẽ trả về lỗi:

SELECT ROUND()
FROM DUAL;

Kết quả:

Error starting at line : 1 in command -
SELECT ROUND()
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00938: not enough arguments for function
00938. 00000 -  "not enough arguments for function"
*Cause:    
*Action:

Và việc chuyển sai số đối số dẫn đến lỗi:

SELECT ROUND(1.34, 2, 3)
FROM DUAL;

Kết quả:

Error starting at line : 1 in command -
SELECT ROUND(1.34, 2, 3)
FROM DUAL
Error at Command Line : 1 Column : 23
Error report -
SQL Error: ORA-00939: too many arguments for function
00939. 00000 -  "too many arguments for function"
*Cause:    
*Action:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ngày được lưu trữ trong Oracle như thế nào?

  2. ORA-01036:tên / số biến không hợp lệ khi chạy truy vấn thông qua C #

  3. 12c DBA_USERS Thay đổi

  4. Perl DBD ::Cài đặt mô-đun Oracle

  5. 2 cách để định dạng một số với Zeros hàng đầu trong Oracle