大数据计算MaxCompute的trunc函数怎么不能用?报错:invalid type INT of argument 2 for function trunc, expect STRING, implicit conversion is not allowed
在MaxCompute中,TRUNC
函数的第二个参数应该是字符串类型(STRING),而不是整数类型(INT)。这是因为在SQL标准中,TRUNC
函数通常需要两个参数:要截断的数值和截断的小数位数。其中,第二个参数表示保留的小数位数,必须是字符串类型。
如果你尝试使用整数作为第二个参数,MaxCompute会抛出类型错误。为了解决这个问题,你需要将第二个参数转换为字符串类型。
以下是一个使用TRUNC
函数的示例,其中第二个参数是字符串类型:
SELECT TRUNC(123.456, '2') AS truncated_value;
在上面的示例中,我们将123.456
截断为小数点后两位,并将结果存储在名为truncated_value
的列中。第二个参数 '2'
表示保留两位小数。
如果你需要使用整数作为第二个参数,你可以使用字符串连接函数将整数转换为字符串类型。以下是一个示例:
SELECT TRUNC(123.456, CAST(2 AS STRING)) AS truncated_value;
在上面的示例中,我们使用 CAST
函数将整数 2
转换为字符串类型,然后再将其作为第二个参数传递给 TRUNC
函数。
请根据你的具体需求修改代码,确保第二个参数是字符串类型,以避免出现类型错误。
入参强转成string类型试下
关掉hive兼容试下:set odps.sql.hive.compatible=false;,这样
,此回答整理自钉群“MaxCompute开发者社区2群”
这个错误提示是因为在MaxCompute的trunc函数中,参数2的类型是INT,而期望的是STRING。在进行类型转换时,不允许隐式转换。
要解决这个问题,您可以尝试将INT类型的参数转换为STRING类型,然后再传递给trunc函数。例如,如果您有一个名为num
的INT变量,您可以使用以下代码将其转换为STRING并传递给trunc函数:
SELECT trunc(CAST(num AS STRING)) FROM your_table;
这样,您就可以避免出现类型不匹配的错误。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。