TRUNCATE
描述
按照保留小数的位数 d 对 x 进行数值截取。
语法
TRUNCATE(<x>, <d>)
参数
参数 | 说明 |
---|---|
<x> | 需要被数值截取的值 |
<d> | 保留小数的位数 |
返回值
按照保留小数的位数 d 对 x 进行数值截取。截取规则:
如果 d
为字面量:
- 当
d > 0
时:保留x
的d
位小数 - 当
d = 0
时:将x
的小数部分去除,只保留整数部分 - 当
d < 0
时:将x
的小数部分去除,整数部分按照d
所指定的位数,采用数字0
进行替换
如果 d
为一个列,并且第一个参数为 Decimal 类型,那么结果 Decimal 会跟入参 Decimal 具有相同的小数部分长度。
举例
d 为字面量
select truncate(124.3867, 2),truncate(124.3867, 0),truncate(124.3867, -2);
+-----------------------+-----------------------+------------------------+
| truncate(124.3867, 2) | truncate(124.3867, 0) | truncate(124.3867, -2) |
+-----------------------+-----------------------+------------------------+
| 124.38 | 124 | 100 |
+-----------------------+-----------------------+------------------------+
d 为一个列
select cast("123.123456" as Decimal(9,6)), number, truncate(cast ("123.123456" as Decimal(9,6)), number) from numbers("number"="5");
+---------------------------------------+--------+----------------------------------------------------------------------+
| cast('123.123456' as DECIMALV3(9, 6)) | number | truncate(cast('123.123456' as DECIMALV3(9, 6)), cast(number as INT)) |
+---------------------------------------+--------+----------------------------------------------------------------------+
| 123.123456 | 0 | 123.000000 |
| 123.123456 | 1 | 123.100000 |
| 123.123456 | 2 | 123.120000 |
| 123.123456 | 3 | 123.123000 |
| 123.123456 | 4 | 123.123400 |
+---------------------------------------+--------+----------------------------------------------------------------------+