TRUNC 函数
TRUNC 函数将数字截断为前一个整数或小数。
TRUNC 函数可以选择性地以 INTEGER
形式包含另一个参数,以指示在任意方向舍入到的小数位数。当您不提供第二个参数时,函数会舍入到最接近的整数。指定第二个参数 integer 时,函数将舍入为最接近的数值,其中精度为 integer 个小数位。
这个函数也可以截断 TIMESTAMP
并返回 DATE
。有关更多信息,请参阅 TRUNC 函数。
语法
TRUNC(number [ , integer ])
参数
- number
-
数值或计算结果为数值的表达式。它可以是
DECIMAL
、FLOAT8
或SUPER
类型。Amazon Redshift 可根据隐式转换规则转换其他数据类型。 - integer
-
(可选)一个
INTEGER
,指示精度在任意方向的小数位数。如果未提供 integer,数值将作为整数截断;如果指定了 integer,数值将截断到指定的小数位。SUPER
数据类型不支持此功能。
返回类型
TRUNC 返回与输入 number 相同的数据类型。
当输入为 SUPER
类型时,输出将保留与输入相同的动态类型,而静态类型仍保留 SUPER
类型。当 SUPER
的动态类型不是数值时,Amazon Redshift 将返回 NULL
。
示例
以下某些示例使用 TICKIT 示例数据库。有关更多信息,请参阅 示例数据库。
要截断为给定的销售交易支付的佣金,请使用以下示例。
SELECT commission, TRUNC(commission) FROM sales WHERE salesid=784;
+------------+-------+ | commission | trunc | +------------+-------+ | 111.15 | 111 | +------------+-------+
要将同一佣金值截断到第一个小数位,请使用以下示例。
SELECT commission, TRUNC(commission,1) FROM sales WHERE salesid=784;
+------------+-------+ | commission | trunc | +------------+-------+ | 111.15 | 111.1 | +------------+-------+
要为第二个参数使用负值截断佣金,请使用以下示例。请注意,111.15
向下四舍五入为 110
。
SELECT commission, TRUNC(commission,-1) FROM sales WHERE salesid=784;
+------------+-------+ | commission | trunc | +------------+-------+ | 111.15 | 110 | +------------+-------+