如何在BigQuery中将float转换为没有指数的字符串

时间:2014-08-04 16:47:20

标签: google-bigquery

我在一个BigQuery表中有浮点数据,如5302014.2和5102014.4。

我想运行一个返回String格式值的BigQuery SQL,但是下面的SQL会产生这个结果:

select a, string(a) from my_table

5302014.2    "5.30201e+06"
5102014.4    "5.10201e+06"

如何重写我的SQL以返回:

5302014.2    "5302014.2"
5102014.4    "5102014.4"

3 个答案:

答案 0 :(得分:3)

SELECT STRING(INTEGER(f)) + '.' + SUBSTR(STRING(f-INTEGER(f)), 3)
FROM (SELECT 5302014.5642 f)

(不是一个不错的黑客,但更好的方法是一个很棒的功能请求发布在https://code.google.com/p/google-bigquery/issues/list?can=2&q=label%3DFeature-Request

答案 1 :(得分:2)

使用standardSQL没有问题

$ bq query '#standardSQL
SELECT a, CAST(a AS STRING) AS a_str FROM UNNEST(ARRAY[530201111114.2, 5302014.4]) a'
+-------------------+----------------+
|         a         |     a_str      |
+-------------------+----------------+
|         5302014.4 | 5302014.4      |
| 5.302011111142E11 | 530201111114.2 |
+-------------------+----------------+

答案 2 :(得分:0)

就使用GBQ而言,将传统sql转换为标准sql确实是前进的最佳方法。标准sql更快,并且可以更好地实现功能。

对于您的用例,最好使用带有CAST(a STRING)的标准sql。