MySQL - TRUNCATE() 函数



MySQL 提供了一组函数来执行各种数值函数。MySQL 的TRUNCATE() 函数用于将给定数字限制到所需的十进制位数。

此函数保留小数点后指定的位数,并删除其余位数。

语法

以下是此函数的语法:

TRUNCATE(x, D);

参数

此函数接受两个参数,即:

  • X - 您需要从中限制小数位数的(十进制)数字。

  • D - 小数点后应保留的位数。

返回值

此函数将截断值作为数值或十进制值返回。

示例

以下是TRUNCATE() 函数的一个示例。在这里,我们将小数点后数字的位数限制为 3。

SELECT TRUNCATE(225.33654, 3) As Result;

输出

上面查询的输出如下所示:

结果
225.336

示例

我们可以将参数作为字符串值传递给此函数:

SELECT TRUNCATE('5587.2645165421', '5') As Result;

输出

这将产生以下结果:

结果
5587.26451

示例

如果我们选择的数字是 0,则结果始终为 0:

SELECT TRUNCATE(0, 1) As Result;

输出

这将产生以下结果:

结果
0

示例

如果参数D(为数字位数选择的数字)的值为 0,则将删除小数点后的所有数字:

SELECT TRUNCATE(6546841.489484, 0) As Result;

输出

执行给定查询后,输出将显示如下:

结果
6546841

示例

如果我们为第二个参数(D)传递负值,则将从给定数字中删除所有小数位,此外,给定数字中指定的位数(小数点左侧)将被修改为零。

SELECT TRUNCATE(2545455.33546, -3) As Result;

输出

执行给定查询后,输出将显示如下:

结果
2545000

示例

在以下示例中,让我们使用 CREATE 语句创建一个名为CUSTOMERS的表,如下所示:

CREATE TABLE CUSTOMERS (
   ID INT AUTO_INCREMENT,
   NAME VARCHAR(20) NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR (25),
   SALARY DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

下面的查询将 7 条记录添加到上面创建的表中:

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES 
(1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ),
(2, 'Khilan', 25, 'Delhi', 1500.00 ),
(3, 'Kaushik', 23, 'Kota', 2000.00 ),
(4, 'Chaitali', 25, 'Mumbai', 6500.00 ),
(5, 'Hardik', 27, 'Bhopal', 8500.00 ),
(6, 'Komal', 22, 'Hyderabad', 4500.00 ),
(7, 'Muffy', 24, 'Indore', 10000.00 );

要验证记录是否已插入,请执行以下查询:

Select * From CUSTOMERS;

以下是 CUSTOMERS 表:

ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 Kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 Hyderabad 4500.00
7 Muffy 24 Indore 10000.00

现在,我们使用 MySQL TRUNCATE() 函数将SALARY列舍入到小数点后零位:

SELECT *, TRUNCATE(SALARY, 0) As Result FROM CUSTOMERS;

执行给定查询后,输出将显示如下:

ID NAME AGE ADDRESS SALARY 结果
1 Ramesh 32 Ahmedabad 2000.00 2000
2 Khilan 25 Delhi 1500.00 1500
3 Kaushik 23 Kota 2000.00 2000
4 Chaitali 25 Mumbai 6500.00 6500
5 Hardik 27 Bhopal 8500.00 8500
6 Komal 22 Hyderabad 4500.00 4500
7 Muffy 24 Indore 10000.00 10000
广告