我想写一个 spark sql 查询来转换数字如下:
9.82000 --> 9.82
40183.14 -> 40183.14
03234.00 -> 3234
0.0 --> 0
具有特定小数位的 Round() 将按原样返回尾随零(如 9.8200)。 trim(round())+0 删除尾随零但失败 0.0
有人可以尽快帮忙吗。
你可以用一个case解决这个问题。基本上是一个 if/else。
对于这个例子,列是
value
.
select
case
when value = 0.0 then 0
else round(value, 2)
end
from...
您可以 rtrim 零,然后是小数点。
spark.sql("""WITH numbers AS (
SELECT explode(array(9.8200, 40183.14, 03234.00, 0.0)) as n
)
SELECT rtrim('.', rtrim('0', n)) as formatted
FROM numbers
""").show
+---------+
|formatted|
+---------+
| 9.82|
| 40183.14|
| 3234|
| 0|
+---------+