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: