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

Hàm FLOOR () trong Oracle

Trong Oracle, FLOOR() hàm trả về số nguyên lớn nhất bằng hoặc nhỏ hơn đối số của nó.

Cú pháp

Cú pháp như sau:

FLOOR(n)

Ở đâu n có thể là bất kỳ kiểu dữ liệu số nào hoặc bất kỳ kiểu dữ liệu phi số nào có thể được chuyển đổi hoàn toàn thành kiểu dữ liệu số.

Ví dụ

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

SELECT FLOOR(1.85)
FROM DUAL;

Kết quả:

   FLOOR(1.85) 
______________ 
             1 

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

SELECT FLOOR(-1.85)
FROM DUAL;

Kết quả:

   FLOOR(-1.85) 
_______________ 
             -2 

So với ROUND()

FLOOR() hàm khác với ROUND() hàm số. ROUND() hàm sẽ làm tròn số lên trong một số trường hợp và giảm xuống ở những trường hợp khác. FLOOR() mặt khác, luôn trả về số nguyên lớn nhất bằng hoặc nhỏ hơn đối số của nó.

SELECT 
    FLOOR(1.85),
    ROUND(1.85)
FROM DUAL;

Kết quả:

   FLOOR(1.85)    ROUND(1.85) 
______________ ______________ 
             1              2 

Ngoài ra, ROUND() cho phép chúng tôi chỉ định số chữ số thập phân để làm tròn thành:

SELECT 
    FLOOR(1.85),
    ROUND(1.85, 1)
FROM DUAL;

Kết quả:

   FLOOR(1.85)    ROUND(1.85,1) 
______________ ________________ 
             1              1.9 

Đối số không phải là số

Đối số 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 sang kiểu dữ liệu số.

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

SELECT FLOOR('Bruce')
FROM DUAL;

Kết quả:

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

Giá trị rỗng

Chuyển null thành FLOOR() trả về null :

SET NULL 'null';

SELECT FLOOR(null)
FROM DUAL;

Kết quả:

   FLOOR(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 FLOOR() mà không chuyển bất kỳ đối số nào sẽ trả về lỗi:

SELECT FLOOR()
FROM DUAL;

Kết quả:

Error starting at line : 1 in command -
SELECT FLOOR()
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"
*Cause:    
*Action:

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

SELECT FLOOR(1, 2)
FROM DUAL;

Kết quả:

Error starting at line : 1 in command -
SELECT FLOOR(1, 2)
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"
*Cause:    
*Action:

Oracle cũng có CEIL() hàm trả về số nguyên nhỏ nhất lớn hơn hoặc bằng đối số của nó.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhà phát triển SQL sẽ không bắt đầu

  2. Các công cụ để tạo một sơ đồ cơ sở dữ liệu / sơ đồ ER từ cơ sở dữ liệu Oracle hiện có?

  3. Xử lý ngoại lệ chèn hàng loạt JDBC

  4. Trong Oracle, có một hàm tính toán sự khác biệt giữa hai Ngày không?

  5. Ví dụ về công việc DBMS_SCHEDULER Chạy mỗi giờ