2017-06-12 52 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。感謝你的回答。 –