在teradata中将十进制转换为整数

时间:2014-01-24 13:28:21

标签: sql teradata

sel cast(9.1 as integer)as inttt;

Result:
9

sel cast(9.9 as integer)as inttt;
Result:
9

我在Teradata上执行了上述查询,两个查询都产生了最低值。

这是从DEC转换为INT的硬规则吗?也就是说,它总是返回最低值吗?

5 个答案:

答案 0 :(得分:3)

是的。

如果将十进制值转换为整数,则小数位会丢失。这是所有语言(我知道)的情况。

答案 1 :(得分:2)

以下代码可用于舍入十进制数:

Select CAST(number + 0.5 AS integer) from sometable

答案 2 :(得分:1)

正如juergen_d已经说过,这应该是任何语言的默认值。

当您想要舍入而不是截断时,您执行 CAST(9.9 AS DEC(9,0)),或者在TD14中还有 ROUND 功能。但请注意,有两种舍入算法,检查您的系统是否使用了所需的算法: - )

答案 3 :(得分:0)

您使用的是哪个版本的TD?如果14,只需使用CEIL功能?

如果在此之前,可以尝试

CASE WHEN CAST(number AS DEC(9,0) < number THEN CAST(number AS
DEC(9,0) + 1 ELSE CAST(number AS DEC(9,0)

(你显然可以根据自己的舍入逻辑进行调整)

答案 4 :(得分:0)

试试这个

canvas.toDataURL