我想在使用 Impala 时取一个值的模数,我知道 abs()
功能。当我这样用这个的时候
select abs(value) from table
它返回一个四舍五入到最接近整数的值。这里的文档说明我需要定义 numeric_type
. 我试过这个
select abs(float value) from table
但这给了我以下的错误
AnalysisException: Syntax error in line 1: ... abs(float value) from table ^ Encountered: FLOAT Expected: ALL, CASE, CAST, DEFAULT, DISTINCT, EXISTS, FALSE, IF, INTERVAL, NOT, NULL, TRUNCATE, TRUE, IDENTIFIER CAUSED BY: Exception: Syntax error
你知道我怎么做吗 abs()
返回 float
?
2条答案
按热度按时间0wi1tuuw1#
我想你误解了语法。将函数调用为
abs(val)
. 返回类型与输入类型相同。它应该适用于整数、小数和浮点数。如果希望返回特定类型,则需要传入该类型,可能需要强制转换到特定类型。
文件是:
abs(a型)
目的:返回参数的绝对值。
返回类型:与输入值相同
诚然,这看起来确实像类型应该是函数调用的一部分。但它实际上是使用编程语言风格的声明来显示所期望的类型。
j5fpnvbx2#
这应该管用
SELECT cast(Abs(-243.5) as float) AS AbsNum