我在一个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"
答案 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。