Перейти к содержимому
Последнее обновление

TRUNCATE

Описание​

Усечение числа x до d знаков после запятой

Синтаксис​

TRUNCATE(<x>, <d>)

Параметры​

ПараметрОписание
<x>Число, которое необходимо усечь
<d>Количество сохраняемых знаков после запятой

Возвращаемое значение​

Число x, усечённое до d знаков после запятой. Правила усечения:

Если d — литерал:

  • При d > 0: сохраняются d знаков после запятой в числе x.
  • При 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 |
+---------------------------------------+--------+----------------------------------------------------------------------+