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

MariaDB ROUND () so với TRUNCATE ()

MariaDB có ROUND() và một TRUNCATE() hàm có thể trả về các kết quả giống nhau hoặc các kết quả khác nhau, tùy thuộc vào giá trị chính xác của các đối số của chúng.

Như tên hàm gợi ý, ROUND() vòng số và TRUNCATE() cắt ngắn con số. Việc cắt bớt một số chỉ đơn giản là cắt nó đi mà không cần thực hiện bất kỳ phép làm tròn nào.

Dưới đây là tóm tắt nhanh về sự khác biệt giữa ROUND()TRUNCATE() trong MariaDB.

Sự khác biệt

Tóm lại, đây là sự khác biệt giữa từng chức năng:

  • ROUND() vòng đối số của nó đến một số vị trí thập phân được chỉ định. Điều này đôi khi sẽ làm cho kết quả được làm tròn và đôi khi không.
  • TRUNCATE() chỉ đơn giản là cắt ngắn đối số của nó đến một số vị trí thập phân được chỉ định. Không xảy ra làm tròn.

Cú pháp &Định nghĩa

Đầu tiên, đây là cú pháp và định nghĩa của từng hàm.

ROUND()

ROUND() hàm có thể được sử dụng theo hai cách sau:

ROUND(X)
ROUND(X,D)

ROUND() làm tròn đối số X thành D vị trí thập phân. Thuật toán làm tròn phụ thuộc vào kiểu dữ liệu của X .

TRUNCATE()

TRUNCATE() chỉ có thể sử dụng hàm với một cú pháp:

TRUNCATE(X,D)

TRUNCATE() trả về số X , được cắt ngắn thành D vị trí thập phân.

Ví dụ

Dưới đây là so sánh để chứng minh sự khác biệt giữa ROUND()TRUNCATE() :

SELECT 
    TRUNCATE(3.6789, 2),
    ROUND(3.6789, 2);

Kết quả:

+---------------------+------------------+
| TRUNCATE(3.6789, 2) | ROUND(3.6789, 2) |
+---------------------+------------------+
|                3.67 |             3.68 |
+---------------------+------------------+

Trong trường hợp này, ROUND() hàm làm tròn số lên vì chữ số tiếp theo (8 ) lớn hơn 5 .

TRUNCATE() mặt khác, chỉ cần cắt ngắn số ở vị trí thập phân được chỉ định. TRUNCATE() không làm tròn số. Nó chỉ đơn giản là cắt số tại nơi được chỉ định.

Cả hai hàm đều chấp nhận giá trị âm cho vị trí thập phân và áp dụng cùng một logic tương ứng:

SELECT 
    TRUNCATE(36789, -2),
    ROUND(36789, -2);

Kết quả:

+---------------------+------------------+
| TRUNCATE(36789, -2) | ROUND(36789, -2) |
+---------------------+------------------+
|               36700 |            36800 |
+---------------------+------------------+

Cùng một kết quả

Cả hai hàm đôi khi có thể trả về cùng một kết quả. Tất cả phụ thuộc vào giá trị của các đối số được truyền.

Dưới đây là một ví dụ mà cả hai đều trả về cùng một kết quả:

SELECT 
    TRUNCATE(3.6749, 2),
    ROUND(3.6749, 2);

Kết quả:

+---------------------+------------------+
| TRUNCATE(3.6749, 2) | ROUND(3.6749, 2) |
+---------------------+------------------+
|                3.67 |             3.67 |
+---------------------+------------------+

Trong trường hợp này, ROUND() không làm tròn số vì chữ số tiếp theo (4 ) nhỏ hơn 5 . Do đó, cả hai kết quả đều giống nhau.

FLOOR() Chức năng

Cả hai hàm đều khác với FLOOR() hàm, trả về giá trị số nguyên lớn nhất không lớn hơn đối số của nó. FLOOR() không chấp nhận đối số thứ hai như ROUND()TRUNCATE() do (dù sao nó cũng chỉ trả về một số nguyê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. Trừ Microseconds cho một giá trị ngày giờ trong MariaDB

  2. Cách RTRIM () hoạt động trong MariaDB

  3. HA cho MySQL và MariaDB - So sánh bản sao Master-Master với Galera Cluster

  4. Cách cài đặt và cấu hình MaxScale cho MariaDB

  5. Tìm tất cả các giá trị không phải dạng số trong một cột trong MariaDB