trino sql 将 double 转换为 varchar 没有科学记数法 E

trino sql convert double to varchar without scientific notation E

提问人:Azima 提问时间:4/25/2023 最后编辑:Azima 更新时间:4/26/2023 访问量:604

问:

用:Athena version engine 3

我正在尝试将值转换为没有符号。double precisionvarcharE

现在:

select 
    format('%s', round(abs(0.972) * pow(10, 2 - ceil(ln(abs(0.972)) / ln(10))), 0) / pow(10, 2 - ceil(ln(abs(0.972)) / ln(10))));

这将按预期返回。0.97

但 Athena 不支持此功能。format()

所以我不得不投到:varchar

select 
    cast(round(abs(0.972) * pow(10, 2 - ceil(ln(abs(0.972)) / ln(10))), 0) / pow(10, 2 - ceil(ln(abs(0.972)) / ln(10))) as varchar);

这将输出:。9.7E-1

有没有其他选择?我该如何解决这个问题?format()

SQL 精度 presto trino

评论

0赞 Guru Stron 4/25/2023
您使用的是哪个引擎版本?
1赞 Azima 4/26/2023
@GuruStron其版本 3
0赞 Guru Stron 4/26/2023
奇怪的是,v3 应该基于具有格式功能的 Trino

答:

1赞 Misha Zaslavsky 4/25/2023 #1

在 中,您可以使用函数。Athenaprintf

SELECT
  printf('%.2f', round(abs(0.972) * pow(10, 2 - ceil(ln(abs(0.972)) / ln(10))), 0) / pow(10, 2 - ceil(ln(abs(0.972)) / ln(10))))) AS val;