📜  MySQL 中的 TRUNCATE()函数

📅  最后修改于: 2022-05-13 01:55:36.941000             🧑  作者: Mango

MySQL 中的 TRUNCATE()函数

在本文中,您将看到 TRUNCATE()函数的工作原理。 MySQL 中的 TRUNCATE函数用于将数字截断到指定的小数位数。

句法 :

TRUNCATE( X, D)

范围 :
TRUNCATE()函数接受上面提到和下面描述的两个参数。

  • X –要截断的数字。
  • D –要截断给定数字的小数位数。如果为 0,则删除所有十进制值并仅返回整数。如果它是负数,则数字被截断到小数点的左侧。

回报:
它返回截断到指定位置后的数字。

示例-1:
当 D 为 0 时截断一个数字。

截断负数 –

SELECT TRUNCATE(-10.11, 0) AS Truncated_Number ;

输出 :

+------------------+
| Truncated_Number |
+------------------+
|              -10 |
+------------------+

截断一个正数 -

SELECT TRUNCATE(100.61, 0) AS Truncated_Number ;

输出 :

+------------------+
| Truncated_Number |
+------------------+
|              100 |
+------------------+

示例 2 :
当 D 为负(-ve)时截断一个数字。
截断负数 –

SELECT TRUNCATE(-19087.1560, -3) AS Truncated_Number;

输出 :

+------------------+
| Truncated_Number |
+------------------+
|           -19000 |
+------------------+
1 row in set (0.00 sec)

截断一个正数 -

SELECT TRUNCATE(10876.5489, -1) AS Truncated_Number;

输出 :

+------------------+
| Truncated_Number |
+------------------+
|            10870 |
+------------------+

示例 3 :
当 D 为正数 (+ve) 时截断一个数字。
将负数截断至小数点后 2 位 -

SELECT TRUNCATE(-7767.1160, 2) AS Truncated_Number;

输出 :

+------------------+
| Truncated_Number |
+------------------+
|         -7767.11 |
+------------------+
1 row in set (0.00 sec)

将正数截断至小数点后 3 位 -

mysql> SELECT TRUNCATE(17646.6019, 3) AS Truncated_Number;

输出 :

+------------------+
| Truncated_Number |
+------------------+
|        17646.601 |
+------------------+

示例 4:
TRUNCATE函数还可用于查找列数据的截断值。在此示例中,我们将查找 Price 列的截断值。演示创建一个名为Product的表

CREATE TABLE Product
(
    Product_id INT AUTO_INCREMENT,  
    Product_name VARCHAR(100) NOT NULL,
    Buying_price DECIMAL(13, 6) NOT NULL,
    Selling_price DECIMAL(13, 6) NOT NULL,
        Selling_Date Date NOT NULL,
    PRIMARY KEY(Product_id)

);

现在向 Product 表插入一些数据:

INSERT INTO  
Product(Product_name, Buying_price, Selling_price, Selling_Date)
VALUES
    ('P6', 1060.865460, 1700.675400, '2020-08-26' ),
    ('P2', 2000.154300, 3050.986700, '2020-08-27' ),
    ('P1', 4000.874300, 5070.786500, '2020-08-28' ),
    ('P2', 2090.654300, 3050.896500, '2020-09-01' ),
    ('P3', 5900.543280, 7010.654700, '2020-09-04' ),
    ('P4', 4000.353200, 4500.125400, '2020-09-05' ),
    ('P5', 5010.768900, 6000.873200, '2020-09-08' ),
    ('P6', 1060.865460, 1400.675430, '2020-09-11' );

因此,产品表是:

mysql> SELECT * FROM Product;

输出 :

+------------+--------------+--------------+---------------+--------------+
| Product_id | Product_name | Buying_price | Selling_price | Selling_Date |
+------------+--------------+--------------+---------------+--------------+
|          1 | P6           |  1060.865460 |   1700.675400 | 2020-08-26   |
|          2 | P2           |  2000.154300 |   3050.986700 | 2020-08-27   |
|          3 | P1           |  4000.874300 |   5070.786500 | 2020-08-28   |
|          4 | P2           |  2090.654300 |   3050.896500 | 2020-09-01   |
|          5 | P3           |  5900.543280 |   7010.654700 | 2020-09-04   |
|          6 | P4           |  4000.353200 |   4500.125400 | 2020-09-05   |
|          7 | P5           |  5010.768900 |   6000.873200 | 2020-09-08   |
|          8 | P6           |  1060.865460 |   1400.675430 | 2020-09-11   |
|          9 | P6           |  1060.865460 |   1700.675400 | 2020-08-26   |
|         10 | P2           |  2000.154300 |   3050.986700 | 2020-08-27   |
|         11 | P1           |  4000.874300 |   5070.786500 | 2020-08-28   |
|         12 | P2           |  2090.654300 |   3050.896500 | 2020-09-01   |
|         13 | P3           |  5900.543280 |   7010.654700 | 2020-09-04   |
|         14 | P4           |  4000.353200 |   4500.125400 | 2020-09-05   |
|         15 | P5           |  5010.768900 |   6000.873200 | 2020-09-08   |
|         16 | P6           |  1060.865460 |   1400.675430 | 2020-09-11   |
+------------+--------------+--------------+---------------+--------------+

现在,我们将把 Buying_price 和 Selling_price 列截断至小数点后两位。

SELECT  
   Product_name,
   Buying_price,
   TRUNCATE(Buying_price, 2) Trucated_Bprice,  
   Selling_price,
   TRUNCATE(Selling_price, 2) Trucated_Sprice
   FROM Product ;

输出 :

+--------------+--------------+-----------------+---------------+-----------------+
| Product_name | Buying_price | Trucated_Bprice | Selling_price | Trucated_Sprice |
+--------------+--------------+-----------------+---------------+-----------------+
| P6           |  1060.865460 |         1060.86 |   1700.675400 |         1700.67 |
| P2           |  2000.154300 |         2000.15 |   3050.986700 |         3050.98 |
| P1           |  4000.874300 |         4000.87 |   5070.786500 |         5070.78 |
| P2           |  2090.654300 |         2090.65 |   3050.896500 |         3050.89 |
| P3           |  5900.543280 |         5900.54 |   7010.654700 |         7010.65 |
| P4           |  4000.353200 |         4000.35 |   4500.125400 |         4500.12 |
| P5           |  5010.768900 |         5010.76 |   6000.873200 |         6000.87 |
| P6           |  1060.865460 |         1060.86 |   1400.675430 |         1400.67 |
| P6           |  1060.865460 |         1060.86 |   1700.675400 |         1700.67 |
| P2           |  2000.154300 |         2000.15 |   3050.986700 |         3050.98 |
| P1           |  4000.874300 |         4000.87 |   5070.786500 |         5070.78 |
| P2           |  2090.654300 |         2090.65 |   3050.896500 |         3050.89 |
| P3           |  5900.543280 |         5900.54 |   7010.654700 |         7010.65 |
| P4           |  4000.353200 |         4000.35 |   4500.125400 |         4500.12 |
| P5           |  5010.768900 |         5010.76 |   6000.873200 |         6000.87 |
| P6           |  1060.865460 |         1060.86 |   1400.675430 |         1400.67 |
+--------------+--------------+-----------------+---------------+-----------------+