truncate

description

Syntax

DOUBLE truncate(DOUBLE x, INT d)
按照保留小数的位数dx进行数值截取。

规则如下:

如果 d 为字面量:
d > 0时:保留xd位小数
d = 0时:将x的小数部分去除,只保留整数部分
d < 0时:将x的小数部分去除,整数部分按照 d所指定的位数,采用数字0进行替换

如果 d 为一个列,并且第一个参数为 Decimal 类型,那么结果 Decimal 会跟入参 Decimal 具有相同的小数部分长度。

example

  1. mysql> select truncate(124.3867, 2);
  2. +-----------------------+
  3. | truncate(124.3867, 2) |
  4. +-----------------------+
  5. | 124.38 |
  6. +-----------------------+
  7. mysql> select truncate(124.3867, 0);
  8. +-----------------------+
  9. | truncate(124.3867, 0) |
  10. +-----------------------+
  11. | 124 |
  12. +-----------------------+
  13. mysql> select truncate(-124.3867, -2);
  14. +-------------------------+
  15. | truncate(-124.3867, -2) |
  16. +-------------------------+
  17. | -100 |
  18. +-------------------------+
  19. mysql> select cast("123.123456" as Decimal(9,6)), number, truncate(cast ("123.123456" as Decimal(9,6)), number) from numbers("number"="5");
  20. --------------
  21. +---------------------------------------+--------+----------------------------------------------------------------------+
  22. | cast('123.123456' as DECIMALV3(9, 6)) | number | truncate(cast('123.123456' as DECIMALV3(9, 6)), cast(number as INT)) |
  23. +---------------------------------------+--------+----------------------------------------------------------------------+
  24. | 123.123456 | 0 | 123.000000 |
  25. | 123.123456 | 1 | 123.100000 |
  26. | 123.123456 | 2 | 123.120000 |
  27. | 123.123456 | 3 | 123.123000 |
  28. | 123.123456 | 4 | 123.123400 |
  29. +---------------------------------------+--------+----------------------------------------------------------------------+

keywords

  1. TRUNCATE