根据我的查询:
SELECT SQRT((D_o_latitude - T_s_lat)^ 2 +(D_o_longitude - T_s_long)^ 2)/0.00001 FROM [datasetName.tableName]
我收到错误错误:函数SUBTRACT中的参数类型不匹配:'D_o_latitude'是类型字符串,'T_s_lat'是类型字符串
所以让我知道我们可以将查询中的字符串类型转换为浮点数,例如转换数据类型,我无法更改数据类型
Jor*_*ani 18
:在传统的SQL,您可以使用以下功能BigQuery中投类型INTEGER(),STRING(),BOOLEAN() TIMESTAMP(),和FLOAT().
使用cast()标准SQL(参见opensourcegeek的回答).
在你的情况下,你可以写:
SELECT SQRT((INTEGER(D_o_latitude) - T_s_lat)^2+(INTEGER(D_o_longitude) - T_s_long)^2)/0.00001
FROM [datasetName.tableName]
Run Code Online (Sandbox Code Playgroud)
正如其他人所建议的,BigQuery 支持CAST转换功能,其工作方式与标准 SQL 类似CAST。
用法示例:
SELECT CAST('5.689' AS NUMERIC) as num;
-- num
-- 5.689
SELECT CAST('10E+2' AS NUMERIC) as num;
-- num
-- 1000
SELECT SAFE_CAST('1.123456789123' AS NUMERIC) as num;
-- num
-- 1.123456789
Run Code Online (Sandbox Code Playgroud)
尽管CASTBQ 支持,SAFE_CAST但建议使用 以避免在无法转换时查询失败。
来自文档:
使用 CAST 时,如果 BigQuery 无法执行转换,查询可能会失败。
如果您想保护您的查询免受这些类型的错误的影响,您可以使用
SAFE_CAST.SAFE_CAST与 相同CAST,只不过它返回NULL而不是引发错误。
SELECT SAFE_CAST('not-a-number' AS NUMERIC) as num;
-- num
-- null
Run Code Online (Sandbox Code Playgroud)
注意:SAFE_CAST在旧版 BigQuery SQL 中不可用。
与IFNULL(或其他一些条件表达式)一起,可以更优雅地处理此类边缘情况/错误。
SELECT IFNULL(SAFE_CAST('not-a-number' AS NUMERIC), 0) as num;
-- num
-- 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
56103 次 |
| 最近记录: |