TRUNCATE 或 标量函数 TRUNC

TRUNCATE函数返回第一个参数,并按指定方式截断。 截断是指小数点左右的小数位数,由第二个参数指定。

阅读语法图跳过可视化语法图 TRUNCATETRUNC (numeric-expression-1 ,0,numeric-expression-2 )

该模式是 SYSIBM。

numeric-expression-1
返回任何内置数值数据类型的值的表达式。

如果 expression-1 是十进制浮点数据类型,则不会使用 DECFLOAT ROUNDING MODE。 TRUNCATE的舍入行为对应于ROUND_DOWN的值。 如果您想要不同的舍入行为,请使用QUANTIZE函数。

参数也可以是字符串或图形字符串数据类型。 字符串输入隐式转换为数值 DECFLOAT(34)。

numeric-expression-2
返回内置SMALLINT或INTEGER数据类型的值的表达式。 整数的绝对值指定截断的位数。 numeric-expression-2 决定了截断点是在小数点的前面还是后面。

如果 numeric-expression-2 不为负数,则 numeric-expression-1 截断为小数点后 numeric-expression-2 小数点右边的绝对值。

如果 numeric-expression-2 为负数时, numeric-expression-1 截断为1+(绝对值 numeric-expression-2 )位,保留小数点后左侧的位数。 如果1+( numeric-expression-2 )大于或等于小数点左边的位数,结果为0。 例如, TRUNCATE(748.58,-4) 返回0。

参数也可以是字符串或图形字符串数据类型。 字符串输入隐式转换为DECFLOAT(34)的数值,然后赋值给INTEGER。

函数的返回值与第一个参数具有相同的数据类型和长度属性。

结果可以为空; 如果任何自变量为空,那么结果为空值。

示例1 :使用员工表 DSN8C10.EMP ,计算薪资最高的员工的平均月薪。 将结果截断到小数点后两位。
   SELECT TRUNCATE(MAX(SALARY/12),2)
     FROM DSN8C10.EMP;
因为样本员工表中收入最高的员工年薪为 52750.00 美元,所以该示例返回的值为 4395.83。
示例2 :将数字 873.726 分别截断为2、1、0、 -1、 -2、 -3 和 -4 位小数。
   SELECT TRUNC(873.726,2),
          TRUNC(873.726,1),
          TRUNC(873.726,0),
          TRUNC(873.726,-1),
          TRUNC(873.726,-2),
          TRUNC(873.726,-3),
          TRUNC(873.726,-4)
     FROM TABLEX
     WHERE INTCOL = 1234;
这个例子返回的值有 873.720、 873.700、 873.000、 870.000、 800.000、 0000.000 和 0000.000。
例3 :计算正数和负数。
SELECT TRUNCATE( 3.5, 0),
	TRUNCATE( 3.1, 0),
	TRUNCATE(-3.1, 0),
	TRUNCATE(-3.5, 0)
	FROM TABLEX;
这个例子返回: 3.0、 3.0、 -3.0、 -3.0。