实时SQL场景下数值类型转换问题:Float/Int、BigInt/Float互转
实时SQL数值类型转换实现方法
针对你提到的三种数值类型转换需求,直接给你对应的SQL实现方式,同时结合你提供的代码给出优化建议:
1. Float类型转Int类型
如果需要直接截断小数部分取整,用CAST函数:
CAST(your_float_column AS INT)
如果需要四舍五入后转Int,先调用ROUND再转换:
CAST(ROUND(your_float_column, 0) AS INT)
要是想向下取整(舍去小数)或向上取整,也可以用FLOOR/CEILING函数,结果本身就是Int类型:
FLOOR(your_float_column) -- 向下取整 CEILING(your_float_column) -- 向上取整
2. BigInt类型转Float类型
直接用CAST或CONVERT函数转换即可:
CAST(your_bigint_column AS FLOAT) -- 或者 CONVERT(FLOAT, your_bigint_column)
3. Int类型转Float类型输出
如果要把Int类型的计算结果转成Float输出,在计算过程中就可以转换,比如你提供的求和拼接代码,可以修改为:
CONCAT(CAST(SUM(book_sales."2022" + book_sales."2021" + book_sales."2020" + book_sales."2019" + book_sales."2018") AS FLOAT)/1000000, 'M')
这样SUM的Int结果会先转为Float,再做除法运算,最终输出带小数的浮点数值拼接单位。
内容的提问来源于stack exchange,提问作者vikraman M
相关产品推荐
相关产品推荐

