2017-06-12 10 views
1

在谷歌的BigQuery,只是好奇:有没有提出浮点值的字符串不失去它的精度的简单方法。谷歌的BigQuery - 代表持股量字符串没有松动的精密

目前:

select 
    string(float_value) as str_float_value, 
    cast(float_value as string) as cast_float_value_as_string, 
    float_value as original_float_value 
from (select 33.7474782 as float_value); 

这会给你回:

Row | str_float_value | cast_float_value_as_string | original_float_value 
----+-----------------+----------------------------+--------------------- 
1 | 33.7475   | 33.7475     | 33.7474782 

有没有更好的办法让浮动的字符串没有失去它的精确度?

[语境:我那里有2分不同的表用一个字符串列包含分数值和含定期浮动列其他表中的一些使用情况下,我总能投串浮动,然后加入会工作。但只是好奇,如果有任何办法,我们可以得到流通量为字符串没有松动的精密]

+0

感谢您的快速编辑Elliott –

回答

2

它看起来像铸造浮点值的字符串时遗留的SQL保留精度较低。你可以用standard SQL代替吗?这里是我看到:

$ bq query "SELECT CAST(float_value AS STRING) AS float_string, float_value FROM (SELECT 33.7474782 AS float_value);" 
+--------------+-------------+ 
| float_string | float_value | 
+--------------+-------------+ 
| 33.7475  | 33.7474782 | 
+--------------+-------------+ 

$ bq query --use_legacy_sql=false "SELECT CAST(float_value AS STRING) AS float_string, float_value FROM (SELECT 33.7474782 AS float_value);" 
+--------------+-------------+ 
| float_string | float_value | 
+--------------+-------------+ 
| 33.7474782 | 33.7474782 | 
+--------------+-------------+ 
+0

不错,这很有趣,我不知道标准的SQL保留所有的精度。是的,我可以根据需要切换到标准SQL。感谢你的回答。 –